android - 如何检测屏幕旋转

标签 android screen-rotation

我有一个显示指南针的 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/

相关文章:

android - 当我旋转屏幕时 onCreateView 在 Fragment 上调用了两次

ios - 解除模态视图 Controller 时如何保持呈现 View Controller 的方向?

android - 如何防止由深层链接引起的同一应用程序的多个实例?

android - 如果屏幕在工作期间旋转,如何获得加载器的结果?

android - 当我的 Activity 发生变化或破坏时,如何阻止 ASyncTask 崩溃?

android - Apptentive从1.7.3版本升级到2.1.1版本时出现NoClassDefFoundError

Libgdx - 如何在单个视口(viewport)内旋转屏幕?

android - 将 fragment 添加到 fragment

java - Android:我如何在文本字段中实现警告

Android,如何在 C2DMReceiver 构造函数中获取上下文?