以编程方式锁定屏幕旋转
在开发过程中,人们可能会发现在代码的特定部分期间锁定/解锁设备屏幕非常有用。
例如,在显示带有信息的 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)