Android橫豎屏切換
Android 2.3以前的橫豎屏切換:
在Android 2.3平臺(tái)上,我們可以需要設(shè)置界面的橫豎屏顯示時(shí),可以在AndroidManifest.xml中,對(duì)Activity的屬性添加以下代碼:
- Android:configChanges="orientation"
同時(shí)在Activity中覆寫(xiě)onConfigurationChanged方法
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- Log.i("TAG","I'm Android 2.3");
- }
通過(guò)設(shè)置,當(dāng)前Activity在橫豎屏切換的時(shí)候,便不會(huì)重新走Activity的生命周期,而是直接執(zhí)行onConfigurationChanged()方法里的內(nèi)容。
Android 4.0以后的橫豎屏切換:
當(dāng)我們?cè)贏ndroid 4.0上像之前那樣設(shè)置橫豎屏?xí)r,會(huì)發(fā)現(xiàn)竟然沒(méi)有效果,Activity依然走自己的生命周期,這是因?yàn)樵贏PI 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).
也就是說(shuō)在Android 3.2(API level 13)以后,當(dāng)設(shè)備橫豎屏切換時(shí)屏幕尺寸也改變了。因此,如果你想在API Level 13或者 更高的環(huán)境下,像以前那樣阻止設(shè)備的橫豎屏切換,你需要在orientation后加上screenSize。也就說(shuō)你要像這樣聲明:android:configChanges="orientation|screenSize"。
也就是說(shuō)我們現(xiàn)在要在AndroidManifest.xml中的Activity加入以下屬性:
Android:configChanges="orientation|screenSize"