在onCreate()中使用setRequestedOrientation()几秒钟时,我得到的是手机方向而不是应用程序方向。
例如:如果手机为纵向模式,则我的应用程序处于纵向模式的时间比应用程序处于横向模式的时间长(使用onCreate中的setRequestedOrientation-onCreate)。 >
使用:onCreate()中的setRequestedOrientation 添加了:方向作为androidManifest中的configChanges
注意:这仅在Android Pie 9.0中发生
答案 0 :(得分:1)
在清单中,
<activity
android:name="Your Activity Name"
android:screenOrientation="landscape" />
在活动onCreate中,
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
答案 1 :(得分:1)
解决此问题的唯一方法是在清单中指定屏幕方向。如果您需要能够以编程方式指定屏幕方向,那么在没有显示初始错误方向的情况下,没有很好的方法来实现它。
这是因为在调用onCreate(...)
时,大多数Activity已被初始化(使用默认值或XML中的值)。当您调用setRequestedOrientation()
时,它会成为活动原始配置中的更改,并且只要主线程完成其当前工作并四处执行命令,便会对其进行处理。
例如,当您从自定义主题设置状态栏的颜色时,您可能会遇到类似的延迟。如果您将主题应用于清单中的活动,则活动打开后,状态栏就会自动着色。但是,如果您在onCreate()
中应用主题,则状态的先前颜色将在短时间内可见,直到应用了主题中提到的颜色为止。
最后一件事要注意...以我的经验,主题示例甚至可能是这种定向情况在某种程度上也取决于设备以及Android版本。清单中的设置始终会在活动显示之前应用到活动中,但是某些设备可能会很快应用onCreate
中请求的内容,以至于您不会注意到它。