歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 4.0 橫豎屏切換注意事項

Android 4.0 橫豎屏切換注意事項

日期:2017/3/1 10:17:55   编辑:Linux編程

==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"

同時依然要在Activity中覆寫onConfigurationChanged方法

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

Log.i("TAG","I'm Android 4.0");

}

Copyright © Linux教程網 All Rights Reserved