【发布时间】:2012-08-21 16:44:06
【问题描述】:
我正在使用以下代码根据用户偏好设置方向锁定:
private void doLock(boolean locked) {
if (locked) {
int o = getResources().getConfiguration().orientation;
if (o == Configuration.ORIENTATION_LANDSCAPE)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else if (o == Configuration.ORIENTATION_PORTRAIT)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
它可以工作,除了我处于解锁模式 (SCREEN_ORIENTATION_SENSOR) 且屏幕正确显示 LANDSCAPE (!),然后调用 doLock(true) 和...
在当前(正确的)横向视图中屏幕锁定到LANDSCAPE,而不是锁定到倒置横向视图。即完全相同但垂直翻转(y 变为 -y)。
为什么会这样?我该如何解决这个问题?
我最初的询问显示除了常见的两个(portrait,landscape)之外还有quite a few的可能性,包括reverseLandscape,但我的直觉告诉我这个问题可能是device-dependent等等使用它我可能只针对我的手机解决问题,而不是针对所有其他设备。
有没有办法在所有设备中强制正确的landscape 方向(从sensor 切换时)?
为了使这个更清晰和更容易重现,以下是显示问题的步骤:
- 首先将手机向右旋转(顺时针),处于解锁模式(
SCREEN_ORIENTATION_SENSOR),屏幕正确显示LANDSCAPE(!), - 然后调用
doLock(true) - 在当前(正确的)横向视图中,屏幕不会锁定到
LANDSCAPE,而是锁定到倒置横向视图。即完全相同但垂直翻转(y变为-y)。
【问题讨论】:
标签: android android-sensors android-orientation