如果只想設定螢幕橫屏或者豎屏,只需要設定橫豎屏:
android:screenorientation="landscape"
android:screenorientation="portrait"
這樣設定後即使螢幕旋轉,activity也不會出現銷毀或方向旋轉等反應,螢幕只有乙個方向。
需要動態改變橫豎屏設定,只需要在**中呼叫setrequestedorientation()
函式,一般在activity的oncreate
方法中設定:
//橫屏設定
setrequestedorientation(activityinfo.screen_orientation_landscape);
//豎屏設定
setrequestedorientation(activityinfo.screen_orientation_portrait);
//預設設定
setrequestedorientation(activityinfo.screen_orientation_unspecified);
這樣做可以隨意動態設定橫豎屏的要求,但是當改變手機螢幕方向設定activity
會被銷毀,重新構建。
如果使用者的手機沒有開啟方向鎖定或者在androidmanifest.xml
中設定了android:screenorientation
,預設情況下,該activity
不會響應螢幕旋轉事件。在上述情況下,依然希望activity能響應螢幕旋轉,則新增如下**:
// oncreate 方法中
setrequestedorientation(activityinfo.screen_orientation_full_sensor);
如果你不希望旋轉螢幕的時候activity
被不斷的oncreate
(此情況往往會造成螢幕切換時的卡頓),那麼,可以使用此方法:
首先,在androidmainfest.xml
中新增configchanges
:
android:configchanges="orientation|keyboard">
activity>
中的詳細設定可參考官方文件。傳送門
!注意,keyboardhidden
表示鍵盤輔助功能隱藏,如果你的開發api等級等於或高於13,還需要設定screensize
,因為screensize
會在螢幕旋轉時改變;
android:configchanges="keyboardhidden|orientation|screensize"
在activity配置中新增上面**切屏不會重新呼叫各個生命週期,只會執行onconfigurationchanged
方法。因此,在activity
中重寫onconfigurationchanged
方法,對螢幕方向變化進行監聽處理:
/**
* configuration newconfig
*/public
void
onconfigurationchanged(configuration newconfig) else
if (newconfig.orientation == configuration.orientation_landscape)
}
優點:我們可以隨時監聽螢幕旋轉變化,並對應做出相應的操作;
缺點:它只能一次旋轉90度,如果一下子旋轉180度,onconfigurationchanged
函式不會被呼叫。
如果你想更加完美,更加完全的掌控監聽螢幕旋轉變化,比如,轉屏時不想重新oncreate,尤其是在camera介面,不想出現旋轉preview時螢幕的卡頓、黑屏等問題,那麼,可以嘗試:
private orientationeventlistener morientationlistener;
morientationlistener = new orientationeventlistener(this) else
if (((rotation > 45) && (rotation < 135))||((rotation > 225) && (rotation < 315)))
}};morientationlistener.enable();
Android禁止旋轉螢幕
禁止螢幕隨手機旋轉變化 有時候我們希望讓乙個程式的介面始終保持在乙個方向,不隨手機方向旋轉而變化 在androidmanifest.xml的每乙個需要禁止轉向的activity配置中加入android screenorientation landscape 屬性。landscape 橫向 portr...
Android實現螢幕自動旋轉功能
直接看 這裡用到的是orientationeventlistener類,它是當手機螢幕旋轉時從sensormanger接受通知的助手類。新建乙個類繼承orientationeventlistener,如下 class myorientoinlistener extends orientationev...
Android 8 1 螢幕旋轉問題
開發中遇到乙個問題,在相機cameraactivity設定了setrequestedorientation activityinfo.screen orientation landscape cameraactivity是橫屏展示。從a activity portrait 開啟b cameraact...