【发布时间】:2011-07-02 14:39:33
【问题描述】:
我想做的事:
- 检测设备的当前布局方向(纵向、横向-左、纵向(倒置)、横向-右)
- 区分两种可能的横向模式(左侧倾斜,右侧倾斜)
- 支持自然状态为横向的设备(for example、discussed here)
- 支持getRotation())
澄清一下,我想知道布局当前的方向。布局的底部是哪个方向?是纵向的吗?是横向的吗?风景是左还是右?等等
我能找到的最接近的是Activity.getResources().getConfiguration().orientation,但它只返回三个可能的值。 ORIENTATION_LANDSCAPE、ORIENTATION_PORTRAIT 或 ORIENTATION_SQUARE。它没有说明是哪种景观。
所以,然后我想,如果我能获得设备的方向值(如 90、180、270 等)并将其与上述配置值进行比较,我就能弄清楚。例如,如果配置值为 ORIENTATION_LANDSCAPE,方向为 270,我可以判断它处于反向横向模式。但是,似乎没有一种简单的方法来获取方向值。我可以实现OrientationEventListener,但这似乎有点过头了,因为我只需要在特定时间获取一次值,而不是一直获取。
Display 类中有两个值,但 getOrientation 已弃用,getRotation 仅适用于 2.2 及更高版本。
现在,即使我确实得到了这个值,仍然存在自然横向设备的问题。这意味着它们的 0 值将是横向而不是纵向。所以我还需要一个确定的方法来判断哪个(横向左、横向或纵向)对应于 0。
在 SO 上有很多关于方向和类似问题的帖子,但我还没有看到任何将所有这些问题都考虑在内的帖子。有人知道吗?
说完了,我想要像 Activity.getResources().getConfiguration().orientation 这样的东西,但要知道它是哪种横向模式。
【问题讨论】:
标签: android rotation orientation landscape