android - Display.getRotation() 不适用于设备的 180 度翻转

标签 android screen-orientation

我正在使用 Display.getRotation() 并在我的 onCreate() 方法中简单地显示带有 toast 消息的旋转,因为每次旋转屏幕时都会调用 onCreate()。

无论如何,我发现了一些奇怪的行为,我认为最好用一个例子来解释。

假设我拿着设备,使其“自然”旋转 0 度。如果我顺时针旋转 90 度,我得到 270 度,如果我逆时针旋转 90 度,我得到 90 度。但是,如果我将设备快速旋转 180 度,速度足够快,因此在 90 度旋转或 270 度旋转时没有过渡,整个图像确实旋转了,但旋转仍然被报告为原始 0学位。

假设我保持在 90 度,如果我在任一方向旋转 90 度,效果都很好,但如果我进行 180 度翻转,图像再次旋转,但它仍然报告原始 90 度。

这是怎么回事?有什么想法吗?

我将尝试更多的实验,如果我弄明白了,我会发布结果。

最佳答案

来自 the documentation :

public int getRotation ()

自:API 级别 8 返回屏幕从其“自然”方向的旋转。返回值可能是 Surface.ROTATION_0(无旋转)、Surface.ROTATION_90、Surface.ROTATION_180 或 Surface.ROTATION_270。例如,如果设备的屏幕自然很高,并且用户已将其侧转为横向,则此处返回的值可能是 Surface.ROTATION_90 或 Surface.ROTATION_270,具体取决于其转动的方向。角度是绘制图形在屏幕上的旋转,与设备物理旋转的方向相反。例如,如果设备逆时针旋转 90 度,为了补偿渲染将顺时针旋转 90 度,因此此处的返回值将为 Surface.ROTATION_90。

我希望这能为您澄清一些事情。

关于android - Display.getRotation() 不适用于设备的 180 度翻转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798305/

相关文章:

ios - 为什么 shouldAutorotateToInterfaceOrientation 方法标记为不可用?

android - 如何在 Android 中保护我的加密 key ?

android - android中的像素密度

android - 当 "do not keep activity"开发选项打开时,ViewModel 被清除

Android Activity 方向改变,每次新实例

iPhone/iPad 方向处理

Android屏幕方向数据丢失预防

android - 如何在 API LEVEL 2.2 的媒体播放器中获取艺术家、专辑

java - 从 ValueAnimator 获取动画值而不启动动画

Android 将方向锁定为起始方向