我的应用程序设计为“仅限横向”。必须支持左右横向之间的旋转,所以我使用android:screenOrientation="sensorLandscape"
.
但是,当必须完全禁用旋转时,我的应用程序中有一个迷你游戏(因为这个迷你游戏将由设备 tlting 控制)。小游戏结束后,方向处理策略必须恢复为sensorLandscape
.
禁用方向更改的标准方法是调用
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
但情况并非如此!正如这里提到的(并由我检查),它导致方向更改为默认状态(可能是纵向)。
因此,从“disableRotation”变为“disableRotation”的唯一方法sensorLandscape
是明确设置所需的方向。所以我有一个选择:要么打电话
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
或者
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
显然,我需要传递一个当前的方向,但似乎Android没有函数来获取它!
getResources().getConfiguration().orientation
要么返回要么Configuration.ORIENTATION_PORTRAIT
没用Configuration.ORIENTATION_LANDSCAPE
。
getWindowManager().getDefaultDisplay().getRotation()
似乎更有希望。它返回Surface.ROTATION_0
......Surface.ROTATION_270
我尝试使用如下逻辑:
int getCurrentOrintation()
{
final int rot = getWindowManager().getDefaultDisplay().getRotation();
if (Surface.ROTATION_0 == rot || Surface.ROTATION_90 == rot)
{
return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
}
return ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
}
它在 Google Nexus 上运行良好,但在 Kindle Fire HD 上返回翻转的定位。
那么,原则上是否可以在 Android 中临时锁定方向更改?