2012-04-24 109 views
0

不同的行为,我有一个活动:Android的屏幕方向变化对平板电脑

android:screenOrientation="portrait" 

和代码:

在活动
if(blah blah blah) 
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 

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

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

UPDATE2: - 是否有可能为整个应用程序设置优先屏幕方向。所以当活动开始了解所需的方向时。这会使unScale调用“setScreenOrientation”,并避免创建第二个活动。

回答

0

没有..你不能为整个应用程序参访屏幕方向......相反,你应要求在各只setScreenOrientation活动比较... Refere this link here...

0

您可以设置

<activity ActivityName = "test_activity" 
android:configChanges="orientation"> 
</activity> 
在你的Android清单文件

。它不会允许活动重新启动方向更改,但配置更改将被正常调用。 稍后,您可以在onconfigurationchange中getdisplayorientation并设置任何你想要的。

+0

谢谢。我知道这种方式。谷歌强烈建议不要这样做。 – Kostadin 2012-04-24 12:10:22

1

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

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