我已指定我的 Activity 应固定为横向,这在大多数情况下都有效。 具体来说,当 Activity 已经在运行,并且我从 Eclipse 启动它的新实例时,Activity 以 Portrait 启动并立即更改为 Landscape——但不是在 View 已经被告知它是 Portrait 之前。 所以我的 View 被初始化为 Portrait,但立即得到一个 surfaceChanged。
我的清单中指定了以下内容:
<activity android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
我也试过:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
当我瞄准 API 级别 7 时,我相信这很好用。现在我针对 API level8,出现了一个奇怪的怪癖。
在 oncreate 方法中,值为:
getResources().getConfiguration().orientation
是:
Configuration.ORIENTATION_PORTRAIT
创建活动后,方向立即更改为横向,我收到一个surfacechanged
,我可以“修复”一切。但为什么它永远是肖像?
我怀疑这与应用程序在从纵向屏幕启动时自动旋转的事实有关。被指示永远不要纵向的应用程序以这种方式启动,然后迅速改变,这似乎很奇怪。
但是,有没有办法让它永远不会出现在肖像中?
我把它放在我的活动中onCreate
:
while (getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
这导致它永远卡在那里:)