我希望实现以下功能:
- 检测设备当前的布局方向(纵向、左横屏、倒立纵向、右横屏)
- 区分两种可能的横屏模式(向左或向右倾斜)
- 支持自然状态为横屏的设备(例如,在此处讨论)
- 支持低于 2.2 版本的设备(无法使用 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这样的东西,但能够告诉它是哪种横向模式。
getOrientation
等同于getRotation
,它被弃用只是因为在2.2中被重命名了。这个功能从API level 1就已经存在了。 - Andrew Russell