與Android橫豎屏相關(guān)的因素兩個:configChanges 和 screenOrientation。
首先看看 configChanges 屬性值:
(1)orientation:消除橫豎屏的影響
(2)keyboardHidden:消除鍵盤的影響
(3)screenSize:消除屏幕大小的影響
在什么都不處理的情況下,我們手機橫豎屏切換時,Activity會重啟,如果不想Activity受影響,我們只要設(shè)置Activity android:configChanges屬性為orientation|screenSize或者orientation|screenSize|keyboardHidden 即可。
接下來看看 screenOrientation ,這個屬性是控制Activity啟動時候的方向,屬性值有:
(1)landscape---控制Acitvity為橫屏顯示。
(2)portrait---控制Activity為豎屏顯示
(3)unspecified--系統(tǒng)默認顯示
(4)user---用戶當前的首選方向
(5)behind---與當前堆棧下面的Activity同向
(6)sensor---根據(jù)傳感器定(常用)
(7)nosensor---忽略傳感器;系統(tǒng)根據(jù)unspecified顯示
熟悉上面兩種屬性之后,我的需求是:打開APP,不希望用戶隨意旋轉(zhuǎn)手機導致手機屏幕亂轉(zhuǎn)動,希望在特定界面才設(shè)置可橫豎屏切換并且不影響 Activity 生命周期。
操作:
(1)在 AndroidManifest 的 Activity 配置 中設(shè)置:
android:configChanges="orientation|screenSize|keyboardHidden" android:screenOrientation="portrait"
(2)在適當?shù)臅r候,用代碼動態(tài)設(shè)置屏幕根據(jù)傳感器轉(zhuǎn)動,也算解鎖在AndroidManifest 設(shè)置的android:screenOrientation="portrait" :
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);