Android Pie 9.0方向问题

Android Pie 9.0 orientation issue

在 onCreate() 中使用 setRequestedOrientation() 几秒钟后,我得到 phone 方向而不是应用程序方向。

例如: 方向设置为横向(使用 setRequestedOrientation - 在 onCreate 中)如果 phone 是纵向我的应用程序是纵向几秒钟比应用程序进入横向。

使用: onCreate() 中的 setRequestedOrientation 已添加: 方向作为 AndroidManifest

中的配置更改

注意:这仅发生在 Android Pie 9.0

在清单中,

 <activity
        android:name="Your Activity Name"
        android:screenOrientation="landscape" />

在 Activity onCreate 中,

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

解决此问题的唯一方法是在清单中指定屏幕方向。如果您需要能够以编程方式指定屏幕方向,那么在不显示初始错误方向的情况下没有很好的方法来实现它。

这是因为在调用 onCreate(...) 时,大多数 Activity 已经初始化(使用默认值或来自 XML 的值)。当您调用 setRequestedOrientation() 时,它充当 activity 原始配置中的 更改 ,并且只要主线程完成其当前工作并获得周围执行命令。

例如,当您从自定义主题设置状态栏的颜色时,您可能会遇到类似的延迟。如果您在清单中的 activity 上应用主题,状态栏将在 activity 打开时立即着色。但是,如果您在 onCreate() 中应用主题,则状态的先前颜色将在短时间内可见,直到应用主题中提到的颜色。

最后一件事要注意...根据我的经验,主题示例甚至可能这个方向案例在某种程度上也取决于设备,也许 Android 版本。清单中的设置总是在 activity 显示之前应用到它,但某些设备可能会应用 onCreate 中请求的内容,速度太快以至于您不会注意到它。