设备方向锁定时的启动方向

时间:2015-05-26 10:10:04

标签: android

在我的应用中,当 System.ACCELEROMETER_ROTATION 指示禁用旋转时,我将setRequestedOrientation()与 SCREEN_ORIENTATION_SENSOR 一起使用,或与 SCREEN_ORIENTATION_NOSENSOR 一起使用。我认为我应该这样做,但应用程序在不同的设备上表现不同。我得到了:

  1. 应用方向始终与主屏幕相同,锁定与否
  2. 旋转被锁定时被迫垂直方向的一个,而不是#1
  3. 在应用程序停止之前表现为#1的行为,然后即使设备本身已锁定为横向,它也始终以垂直方向启动
  4. #3是人们抱怨的。显然,他们期望“锁定”将所有内容保持在相同的方向,而根据文档 System.ACCELEROMETER_ROTATION 不应该锁定任何东西,只能禁用加速度计检测。看起来有些供应商对此有不同的解释。

    行为#3是正常的事情,还是我应该以某种方式解决的特定设备错误?如何获得主屏幕的锁定方向或方向?在锁定时弄乱方向是否安全?

    编辑: 该应用程序决定是否适合允许在横向和纵向之间切换,具体取决于设备(屏幕宽高比和其他一些东西)。在这种情况下,既不通过清单设置一个固定方向,也不允许系统处理旋转。现在接受我自己的回答让这个问题关闭。

4 个答案:

答案 0 :(得分:0)

您可以通过清单

设置默认方向

答案 1 :(得分:0)

在每个活动的清单中静态强制您的方向。例如,如果要强制活动的“纵向”方向,请将此属性添加到清单文件中的活动标记中:

android:screenOrientation="portrait"

答案 2 :(得分:0)

你不应该做任何事情。

如果用户已禁用设备轮换,并且您没有尝试强制执行特定方向,则您的应用将按所选方向加载。

您无需明确设置SCREEN_ORIENTATION_SENSORSCREEN_ORIENTATION_NOSENSOR

当您在设备上禁用旋转时,它会将首选方向锁定为当前所在位置。某些发射器(主屏幕)不支持横向,因此即使设备应该锁定到横向,它们也是仍然会以肖像显示。启动不锁定方向的应用程序时,它将更改回横向

答案 3 :(得分:0)

想出来。启用加速度计旋转时使用 SCREEN_ORIENTATION_SENSOR ,当 SCREEN_ORIENTATION_USER 时,使用 SCREEN_ORIENTATION_USER ,在我到目前为止测试的所有设备上按预期工作。

NOSENSOR起初看起来似乎是一个合适的选项,但是现在看一下文档,它只会说加速度计会被忽略而且没有关于它解决的方向,我猜它确实是不确定的。一种无用的选择,有点误导。