1. 程式人生 > >Android橫豎屏設定

Android橫豎屏設定

  如果activity預設是某種模式的,直接在AndroidManifest.xml中的對應activity項中,新增相應的程式碼即可實現

  如:

    android:screenOrientation="unspecified" 跟隨系統螢幕旋轉方向等(預設)

    android:screenOrientation="landscape" 強制橫屏

    android:screenOrientation="portrait" 強制豎屏

.程式碼動態設定

  如果需要動態設定activity的在螢幕上的顯示方向,可以呼叫系統提供的api函式:setRequestedOrientation(@ActivityInfo.ScreenOrientationint requestedOrientation).

  requestedOrientation主要對應的值:

   ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED

   ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

   ActivityInfo.SCREEN_ORIENTATION_PORTRAIT


.android:screenOrientation的詳細引數


  

.android:configChanges設定(自行處理配置變更)

  當我們設定的旋轉方式是跟隨系統的,既android:screenOrientation="unspecified"

,這時如果螢幕方向發生改變,Activity會被銷燬,然後重新建立Activity.

  (重啟行為旨在通過利用與新裝置配置匹配的備用資源自動重新載入您的應用,來幫助它適應新配置.)

  重啟並恢復大量資料不僅成本高昂,影響效能,而且給使用者留下糟糕的使用體驗.

  如果不想Activity被銷燬,需要在AndroidManifest.xml中配置android:configChanges

  例如:

     

   注意:從 Android 3.2API級別 13)開始,當裝置在縱向和橫向之間切換時,“螢幕尺寸”也會發生變化.因此,在開發針對API 級別 13或更高版本(正如 minSdkVersion 

和 targetSdkVersion 屬性中所宣告)的應用時,若要避免由於裝置方向改變而導致執行時重啟,則除了 "orientation" 值以外,您還必須新增 "screenSize" .也就是說,您必須宣告android:configChanges="orientation|screenSize".但是,如果您的應用面向API 級別 12 或更低版本,則Activity 始終會自行處理此配置變更(即便是在Android 3.2 或更高版本的裝置上執行,此配置變更也不會重啟Activity.)

   加上這段程式碼後,如果再旋轉手機螢幕,Activity就不會再被銷燬了,而是會回撥activity中的onConfigurationChanged方法,這時就需要在這裡處理相關邏輯.