以程式設計方式鎖定螢幕旋轉
在開發過程中,人們可能會發現在程式碼的特定部分期間鎖定/解鎖裝置螢幕非常有用。
例如,在顯示帶有資訊的 Dialog 時,開發人員可能希望鎖定螢幕的旋轉以防止對話方塊被解除,並且當對話方塊被解除時,重建當前活動以再次解鎖對話方塊。
即使我們可以通過執行以下操作從清單實現旋轉鎖定:
<activity
android:name=".TheActivity"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
通過執行以下操作,可以通過程式設計方式執行此操作:
public void lockDeviceRotation(boolean value) {
if (value) {
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_USER);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
}
}
然後呼叫以下內容,分別鎖定和解鎖裝置旋轉
lockDeviceRotation(true)
和
lockDeviceRotation(false)