即使方向设置为纵向,屏幕仍然可以旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了即使方向设置为纵向,屏幕仍然可以旋转相关的知识,希望对你有一定的参考价值。

我知道瓷砖似乎很混乱,但是,它发生在我的应用程序中。好的,这是故事。

这是Manifest中的关键设置:

android:screenOrientation="portrait"
android:configChanges="orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"

在我的Activity.java中,我还覆盖了onConfigurationChanged(Configuration config),它将打印出当前方向。

这是最有趣的部分。我开始使用Intent从我的应用程序开始一个可旋转的应用程序,比如Gallery(假设它可以旋转)。将手机置于风景中,然后按后退键。新启动的活动(在本例中为Gallery)将退出,我的应用程序将重新启动。从理论上讲,我的应用程序应该以纵向显示,因为我已将screenOrientation设置为肖像。然而,实际上,我的应用程序只是在肖像中保持1秒钟,然后跳转到横向,然后再次跳回到肖像。

在调用requestedOrientation之后,我开始一个线程打印出我的应用程序的onRestart。我发现输出总是“1”,这是“肖像”。然而,onConfigurationChanged的输出给了我当前的风景定位!

所以,我完全糊涂了。怎么会发生这种情况?有人可以给我一些建议吗?

答案

可能是您在活动中使用屏幕方向。但另一项活动将是轮换。在下面的示例中,ActivityA的方向不会改变,但ActivityB将会旋转。如果你在app标签中写android:screenOrientation =“portrait”而不提及活动中的任何内容。它什么都不起作用。所以请在活动中提及screenOrientation。

<activity
   android:name=".ActivityA"
   android:screenOrientation="portrait">
</activity>
<activity
   android:name=".ActivityB">
</activity>
另一答案

你在用android:screenOrientation="portrait" android:configChanges="orientation|screenSize|keyboardHidden"吗?

在您的应用程序内或活动中

以上是关于即使方向设置为纵向,屏幕仍然可以旋转的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 上将方向设置为纵向

如何在屏幕方向更改时附加片段?

在 iOS 14 中锁定屏幕方向

iOS中的屏幕旋转

Flutter:如何按需设置和锁定屏幕方向

即使 autoRotation 关闭,也能获取 android 设备方向