在我的应用中,当 System.ACCELEROMETER_ROTATION 指示禁用旋转时,我将setRequestedOrientation()与 SCREEN_ORIENTATION_SENSOR 一起使用,或与 SCREEN_ORIENTATION_NOSENSOR 一起使用。我认为我应该这样做,但应用程序在不同的设备上表现不同。我得到了:
#3是人们抱怨的。显然,他们期望“锁定”将所有内容保持在相同的方向,而根据文档 System.ACCELEROMETER_ROTATION 不应该锁定任何东西,只能禁用加速度计检测。看起来有些供应商对此有不同的解释。
行为#3是正常的事情,还是我应该以某种方式解决的特定设备错误?如何获得主屏幕的锁定方向或方向?在锁定时弄乱方向是否安全?
编辑: 该应用程序决定是否适合允许在横向和纵向之间切换,具体取决于设备(屏幕宽高比和其他一些东西)。在这种情况下,既不通过清单设置一个固定方向,也不允许系统处理旋转。现在接受我自己的回答让这个问题关闭。
答案 0 :(得分:0)
答案 1 :(得分:0)
在每个活动的清单中静态强制您的方向。例如,如果要强制活动的“纵向”方向,请将此属性添加到清单文件中的活动标记中:
android:screenOrientation="portrait"
答案 2 :(得分:0)
你不应该做任何事情。
如果用户已禁用设备轮换,并且您没有尝试强制执行特定方向,则您的应用将按所选方向加载。
您无需明确设置SCREEN_ORIENTATION_SENSOR
或SCREEN_ORIENTATION_NOSENSOR
。
当您在设备上禁用旋转时,它会将首选方向锁定为当前所在位置。某些发射器(主屏幕)不支持横向,因此即使设备应该锁定到横向,它们也是仍然会以肖像显示。启动不锁定方向的应用程序时,它将更改回横向
答案 3 :(得分:0)
想出来。启用加速度计旋转时使用 SCREEN_ORIENTATION_SENSOR ,当 SCREEN_ORIENTATION_USER 时,使用 SCREEN_ORIENTATION_USER ,在我到目前为止测试的所有设备上按预期工作。
NOSENSOR起初看起来似乎是一个合适的选项,但是现在看一下文档,它只会说加速度计会被忽略而且没有关于它解决的方向,我猜它确实是不确定的。一种无用的选择,有点误导。