Android螢幕旋轉

2021-07-30 15:44:24 字數 2440 閱讀 6672

如果只想設定螢幕橫屏或者豎屏,只需要設定橫豎屏:

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...