我的应用程序被设计为“仅限横屏”。必须支持左右横屏之间的旋转,因此我使用了
显然,我需要传递当前方向,但似乎Android没有获取它的功能!
android:screenOrientation="sensorLandscape"
。但是,在我的应用程序中有一个小游戏,完全禁用旋转(因为这个小游戏要由设备倾斜来控制)。小游戏结束后,方向处理策略必须恢复到sensorLandscape
。禁用方向更改的标准方法是调用:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
但这并不是这种情况!如此处所述(并由我检查),它会导致方向更改为默认状态(可能是纵向)。
因此,从 sensorLandscape
到 "disableRotation" 的唯一方法是明确设置所需的方向。 所以我有一个选择:要么调用
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中原则上是否可能暂时锁定方向更改?