我想这样做:如何在支持自然景观设备的情况下检测左(正常)景观和右景(逆向)景观?
- 检测设备的当前布局的方向(肖像,风景,左,人像(倒挂),景观 - 右)
- 区分这两种可能的横向模式之间(靠在左侧,靠在右边)有景观为自然状态
- 支持设备(for example,discussed here)
- 支持< 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()。方向,但可以告诉它是横向模式。
你是什么意思支持?我有一个2.1设备(和模拟器)可以旋转到任何横向模式。 – cottonBallPaws 2011-02-23 17:20:52
@littleFluffyKitty这是一个可以接受的答案,因为它没有真正回答这个问题(这是一个很好的问题),这真是一种耻辱。 FWIW,'getOrientation'等同于'getRotation',弃用仅仅是因为它在2.2中被重命名。自API级别1以来,该功能一直存在。 – 2011-09-08 03:44:12