Android橫豎屏切換
Android 2.3以前的橫豎屏切換:
在Android 2.3平臺上,我們可以需要設置界面的橫豎屏顯示時,可以在AndroidManifest.xml中,對Activity的屬性添加以下代碼:
- Android:configChanges="orientation"
同時在Activity中覆寫onConfigurationChanged方法
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- Log.i("TAG","I'm Android 2.3");
- }
通過設置,當前Activity在橫豎屏切換的時候,便不會重新走Activity的生命周期,而是直接執行onConfigurationChanged()方法里的內容。
Android 4.0以后的橫豎屏切換:
當我們在Android 4.0上像之前那樣設置橫豎屏時,會發現竟然沒有效果,Activity依然走自己的生命周期,這是因為在API level 13以后Android做了修改了,SDK描述如下:
Caution: Beginning with Android 3.2 (API level 13), the "screen size" also changes when the device switches between portrait and landscape orientation. Thus, if you want to prevent runtime restarts due to orientation change when developing for API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), you must include the "screenSize" value in addition to the "orientation" value. That is, you must decalare android:configChanges="orientation|screenSize". However, if your application targets API level 12 or lower, then your activity always handles this configuration change itself (this configuration change does not restart your activity, even when running on an Android 3.2 or higher device).
也就是說在Android 3.2(API level 13)以后,當設備橫豎屏切換時屏幕尺寸也改變了。因此,如果你想在API Level 13或者 更高的環境下,像以前那樣阻止設備的橫豎屏切換,你需要在orientation后加上screenSize。也就說你要像這樣聲明:android:configChanges="orientation|screenSize"。
也就是說我們現在要在AndroidManifest.xml中的Activity加入以下屬性:
Android:configChanges="orientation|screenSize"