Android屏幕方向更改在平板电脑上有不同的行为

时间:2012-04-24 11:55:00

标签: android screen orientation tablet

我有以下活动:

android:screenOrientation="portrait"

和代码:

if(blah blah blah)
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

活动onCreate。 1.在智能手机上测试“setRequestedOrientation”会导致销毁活动并再次创建所需的屏幕方向。 2.在平板电脑设备上测试时,此代码仅运行一次。在“setRequestedOrientation”之后,它只会继续而不会破坏并再次创建活动。在没有debuger的启动代码或onCreate中没有断点的情况下会发生这种情况。如果我停在onCreate函数 - 我在日志中看到 - 再次破坏和onCreate。 如何用平板电脑捕捉具体情况?

更新: - 如果关闭“方向锁定”,则会出现平板电脑问题。如果启用“方向锁定”,则程序的工作方式与智能手机相同。

UPDATE2: - 是否可以将优先屏幕方向设置为整个应用程序。因此,当活动开始知道所需的方向时。这将使无限制的调用'setScreenOrientation'并避免第二次活动创建。

3 个答案:

答案 0 :(得分:1)

在这个问题花了一整天后,我在我的应用程序中进行了以下更改: 1.每个活动/没有第一个/被声明为android:screenOrientation =“后面”。 2.在第一个活动中,我使用用户选择的模式/从我的菜单设置首选屏幕方向。 3.仅当用户在菜单选项中更改模式时才调用setRequestedOrientation。

这会导致只创建一次活动。最终:)

答案 1 :(得分:0)

您可以设置

<activity ActivityName = "test_activity"
android:configChanges="orientation">
</activity>

在您的Android清单文件中。它不允许活动在方向更改时重新启动,但onconfigurationchange将被称为normaly。 稍后您可以在onconfigurationchange中获取显示方向并设置您想要的任何内容。

答案 2 :(得分:0)

否..您无法为整个应用程序设置优先屏幕方向 ...而应仅在相应的活动中调用setScreenOrientation ... Refere this link here...