即使将方向设为纵向

时间:2018-09-10 10:03:10

标签: android rotation

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

以下是清单中的关键设置:

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的输出给了我当前的风景方向!

所以,我完全感到困惑。怎么会这样有人可以给我一些建议吗?

2 个答案:

答案 0 :(得分:1)

可能是您在活动中使用屏幕方向。但是另一个活动将是轮换。在下面的示例中,ActivityA的方向不会改变,但ActivityB会旋转。如果您在应用代码中编写了android:screenOrientation =“ portrait”,但未在活动中提及任何内容。它没有任何作用。因此,请在活动中提及screenOrientation。

<activity
   android:name=".ActivityA"
   android:screenOrientation="portrait">
</activity>
<activity
   android:name=".ActivityB">
</activity>

答案 1 :(得分:0)

您正在使用android:screenOrientation="portrait" android:configChanges="orientation|screenSize|keyboardHidden"

在您的应用程序内部或处于活动状态

相关问题