2014년 3월 3일 월요일

[ANDROID CODE/ 안드로이드] android Orientation reloading 문제

android에서 세로에서 가로 / 가로에서 세로로 회전할때

처음 동작이 반복되는 것을 본적이 있을 겁니다.

webpage loading 다시 일어 난다던가..

저같은 경우는 flash light 어플 만들어 보고 있었는데

처음에 시작됬을때 자동으로 켜져 있게 만들었으나

화면이 회전하면 다시 켜지는 불상사를 만나게 되었습니다.. ㅠㅠ

그래서 찾아본 방법입니다.

왜 그런 동작을 반복할까?? 그건 바로 android에서는 화면이 회전되어

다시 그려질때 onCreate()를 다시 호출하게 됩니다.

그러니 당연히 처음부터 동작을 다시 하게 되겠죠.. 이런..

그래서 android api 에서는 

onConfigurationChanged 를 지원하고 있습니다.

사용법은 다음과 같이~~~~

일단 

AndroidManifest.xml에 

<activity></activity> 사이에 다음을 추가 해 줍니다.


    android:configChanges="orientation|screenSize"

여기서 또하나 주의 점

android 3.2 이상부터는 위와 같고 

그 아래 버전은 

  android:configChanges="orientation|keyboardHidden"

을 사용하셔야 합니다.


ex )

ANDROID 3.2 이하

<activity android:name=".MainActivity"
             android:configChanges="orientation|keyboardHidden"
             android:label="@string/main_name">


ANDROID 3.2이상

<activity android:name=".MainActivity"
             android:configChanges="orientation|screenSize"
             android:label="@string/main_name">

빨간 부분 잘 보세요~~~

그뒤 Activity에 onConfigurationChanged 메서드를 입력합니다.

그럼 화면 이 가로/세로 ~ 세로/가로 전환시 onConfigurationChanged  가 호출 된다.

@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
System.out.println("ORIENTATION_LANDSCAPE");
}else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
System.out.println("ORIENTATION_LANDSCAPE");
}
}//


여기서는 그냥 System으로 동작여부만 찍어 봤다.

댓글 없음:

댓글 쓰기