我有一个显示指南针的 Activity ,我需要知道屏幕的方向才能正确旋转指针。我需要区分 90° 和 270° 旋转才能正确处理这个问题。
当我旋转屏幕时(至少在我的 Nexus S 上), Activity 的 onCreate
被调用,例如当我从纵向模式旋转到横向模式时。当我从一种横向模式旋转到另一种且上边缘抬起时,onCreate()
被调用两次(一次用于纵向模式,一次用于目标横向模式)。
但是,当我旋转底部边缘向上时,屏幕旋转 180° 并且 onCreate
没有被调用。在这种情况下是否有事件被触发?
最佳答案
您是正确的,在旋转 180 度时您不会重新启动或更改配置,因为配置实际上并没有更改。 (还是横向还是纵向,其他都一样。)
但是,如果您显示的是罗盘,那一定意味着您正在根据传感器事件更新它。因此,您可以在每次获得传感器更新时调用 Display.getRotation() 来获取屏幕的当前旋转。事实上,您需要是解释传感器事件的旋转(或者实际上当它们到达屏幕时如何修改它们),而不仅仅是方向。
我找到了一篇相关的博客文章 well worth reading .
请务必阅读 SDK documentation .
另请查看 the discussion关于使用 Display.getRotation() 正确重新映射传感器坐标。
关于android - 如何检测屏幕旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843809/