在 onCreate() 中使用 setRequestedOrientation() 几秒钟时,我得到的是手机方向而不是应用程序方向。
例如:方向设置为横向(使用 setRequestedOrientation - 在 onCreate 中),如果手机处于纵向,我的应用程序处于纵向状态几秒钟,然后应用程序进入横向。
使用: onCreate() 中的 setRequestedOrientation 添加:方向作为 AndroidManifest 中的 configChanges
注意:这种情况仅发生在 Android Pie 9.0 中
最佳答案
解决这个问题的唯一方法是在 list 中指定屏幕方向。如果您需要能够以编程方式指定屏幕方向,那么没有好的方法可以在不显示初始错误方向的情况下实现它。
这是因为在调用 onCreate(...)
时,大部分 Activity 已经初始化(使用默认值或 XML 中的值)。当您调用 setRequestedOrientation()
时,这将充当 Activity 原始配置中的更改,并且只要主线程完成当前工作并开始执行命令。
例如,当您从自定义主题设置状态栏的颜色时,您可能会遇到类似的延迟。如果您在 list 中的 Activity 上应用主题,则 Activity 打开后状态栏就会自行着色。但是,如果您在 onCreate()
中应用主题,则状态的先前颜色将在短时间内可见,直到应用主题中提到的颜色为止。
最后要注意的一点...根据我的经验,主题示例甚至可能是这个方向案例在某种程度上也取决于设备,也许还取决于 Android 版本。 list 中的设置始终会在 Activity 显示之前应用到 Activity,但某些设备可能会应用 onCreate
中请求的内容,速度太快,以至于您不会注意到。
关于Android Pie 9.0 方向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57674536/