橫屏和豎屏切換介面不重新整理

Main-zy發表於2015-10-15

不設定Activity的android:configChanges時,切屏會重新呼叫各個生命週期

設定Activity的android:configChanges時,切屏不會重新呼叫宣告週期,只會執行onConfigurationChanged方法。


在android中每次螢幕的切換動會重啟Activity,所以應該在Activity銷燬前儲存當前活動的狀態,在Activity再次Create的時候載入配置。在activity加上android:configChanges="keyboardHidden|orientation"屬性,就不會重啟activity.而只是呼叫onConfigurationChanged(Configuration newConfig).這樣就可以在這個方法裡調整顯示方式.


public void onConfigurationChanged(Configuration newConfig) {  
        try {  
            super.onConfigurationChanged(newConfig);  
            if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {  
                Log.v("Himi", "onConfigurationChanged_ORIENTATION_LANDSCAPE");  
            } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {  
                Log.v("Himi", "onConfigurationChanged_ORIENTATION_PORTRAIT");  
            }  
        } catch (Exception ex) {  
        }  
    }  


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.himi" android:versionCode="1" android:versionName="1.0">  
  4.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  5.         <activity android:name=".MainActivity" android:label="@string/app_name"  
  6.             android:configChanges="keyboardHidden|orientation">  
  7.             <intent-filter>  
  8.                 <action android:name="android.intent.action.MAIN" />  
  9.                 <category android:name="android.intent.category.LAUNCHER" />  
  10.             </intent-filter>  
  11.         </activity>  
  12.     </application>  
  13.     <uses-sdk android:minSdkVersion="4" />  
  14. </manifest>  

相關文章