본문 바로가기

카테고리 없음

안드로이드 좌우 변환시 대처사항


안드로이드는 좌우 전환이 일어날때마다, onCreate가 다시 일어나게 된다.
상황에 따라서, 이는 안좋을 수 있기 때문에 막는 경우도 있다.

좌우 전환에 따라서, Create를 안하게 하기 위해서는,  

<activity android:name=".ViewVideo" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  
                  android:configChanges="orientation|keyboardHidden">

                  <intent-filter>
                        <action android:name="android.intent.action.VIEW" />
                        <category android:name="android.intent.category.DEFAULT" />
                  </intent-filter>
            </activity>
      </application>
</manifest> 


AndroidManifest.xml의 해당액티비티에, 위 예제와 같이  android:configChanges="orientation|keyboardHidden"  써주면 된다.

하지만, 그렇다고 좌우 전환시마다 리소스가 바뀌어야 하는경우가 있다.
이럴때는, Activity의 onConfigurationChanged(Configuration newConfig)를 오버라이드 하여 사용하여 주면 된다.
이는 화면의 상태가, landscape <-> portrait로 바뀔때 호출이 되며,
android:configChanges="orientation|keyboardHidden" 상태일때만 호출이 된다.

사용 예는 다음과 같다.

  /**
     * 화면 좌/우 전환이 일어났을때, 백그라운드 모양을 바꾸어준다.
     */
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // 가로 상태일때 

        if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
            introBack.setBackgroundDrawable(getResources().getDrawable(R.drawable.t_cover_bg_land));
        } // 세로 상태일때

else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){

            introBack.setBackgroundDrawable(getResources().getDrawable(R.drawable.t_cover_bg));
       }
    }