在平板电脑上强制横屏模式

3

我有一个活动必须始终在横屏模式下启动。在我的onCreate()方法中,我使用屏幕的尺寸(宽度和高度)来设置界面,因此很重要的是该活动最初不会以错误的方向创建。

为了做到这一点,我在清单文件中添加了以下内容:

<activity android:name="app.myapp.WideActivity"
     android:screenOrientation="landscape"
     android:configChanges="keyboardHidden|orientation"
     android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>            

这在我的手机上完全正常,但在我的平板电脑(三星Galaxy Tab,Android 3.1)上,活动在纵向模式下启动并几乎立即切换方向(似乎是在onCreate()方法之后)。在我的手机上(Android 2.3),在调用onCreate()方法之前屏幕已经是横向的了。
在onCreate()方法中添加setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);似乎没有帮助。我该怎么做才能实现我想做的事情呢?
1个回答

0

我不确定你是否能够解决确切的问题。对我来说,问题似乎在三星的活动/窗口管理框架部分的实现中。但是,您可以尝试通过延迟渲染来防止出现糟糕的UI。

在onCreate()中显示一些默认布局 - 只是一个平面黑色布局,拉伸到整个屏幕。 在onResume()中检查屏幕方向,如果不是横向,则发布延迟的可运行项,该项将应用您的布局(setContentView(my_UI))。 在可运行项内部,还要检查屏幕方向是否为横向,并在方向仍为纵向时重新发布可运行项,否则设置UI。


感谢您的回答。它似乎是奇怪的行为,它似乎可以正确处理纵向但不能处理横向。我认为对于我的应用程序,我只需要检查方向并在必要时交换高度和宽度值即可。这使得我的活动正确显示。 - Adam Smith
其实,现在我想想,如果我删除 configChanges="orientation",当设备切换方向时,onCreate() 方法将再次被调用,UI 将自动修复。也可以在 onCreate 方法中添加一个检查,在纵向模式下根本不绘制 UI。 - Adam Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接