안드로이드는 좌우 전환이 일어날때마다, onCreate가 다시 일어나게 된다.
상황에 따라서, 이는 안좋을 수 있기 때문에 막는 경우도 있다.
좌우 전환에 따라서, Create를 안하게 하기 위해서는,
<activity android:name=".ViewVideo" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|keyboardHidden">
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));
}
}