Android橫豎屏切換小結

一、關於設置

     橫豎屏的切換可以自動,也可以根據手機的重力感應等,如何開啓關於橫豎屏切換的設置,有2種方法,如下:

    1.通過XML設置橫豎屏切換

       在項目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性,它有以下幾個參數:

       "unspecified"         默認值 由系統來判斷顯示方向.判定的策略是和設備相關的,所以不同的設備會有不同的顯示方向.
       "landscape"          橫屏顯示(寬比高要長)
       "portrait"                豎屏顯示(高比寬要長)
       "user"                    用戶當前首選的方向
       "behind"                和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)
       "sensor"                有物理的感應器來決定。如果用戶旋轉設備這屏幕會橫豎屏切換。
       "nosensor"            忽略物理感應器,這樣就不會隨着用戶旋轉設備而更改了 ( "unspecified"設置除外 )

     2.通過代碼設置

        在Java代碼中通過setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

二、關於佈局顯示

       既然有橫豎屏的切換,那麼兩種情況下如何各自適應顯示相應的佈局是關於橫豎屏切換的重要話題。配置佈局的方法有2種,如下:

       1.在res目錄下建立layout-land和layout-port目錄,相應的layout文件名不變。layout-land是橫屏的layout,layout-port是豎屏的layout,代碼運行後,JVM會自動尋找相應的佈局文件。

       2.通過this.getResources().getConfiguration().orientation來判斷當前是橫屏還是豎屏然後來加載相應的xml佈局文件。

          因爲當屏幕變爲橫屏的時候,系統會重新呼叫當前Activity的OnCreate方法,即重新載入當前Activity。

          所以,可以通過判斷橫豎屏轉換來更換佈局文件。
         

          if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
          Log.i("info", "landscape");
          }
          else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
          Log.i("info", "portrait");
          }



三、關於重新載入

       重新載入,即上面提到的轉換屏幕時,系統重新呼叫OnCreate方法。由於重新創建Activity,當前屏幕狀態下的臨時數據會丟失,所以這裏有一個關於數據存儲的問題。

       1.是否重新載入可以設置

          設置方法:在androidmanifest.xml中加入配置 android:configChanges="orientation"。

           配置該屬性後的Activity在運行時,就不會重複的調用onCreate(),甚至不會調用onPause.onResume.只會調用一個 onConfigurationChanged(Configuration newConfig)

       2.如果需要重新載入,那麼就需要存儲臨時數據,可以根據Android的相關數據存儲方法處理,這裏不詳細說明。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章