8

我已指定我的 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);
}

这导致它永远卡在那里:)

4

2 回答 2

0

将此添加到您的活动中:

@Override 
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);     
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
} 
于 2013-01-27T07:52:51.607 回答
-1

在你的清单中定义方向。

屏幕方向=“风景”

或者

在活动中的 setContentView(...) 之前设置 setRequestOrientation(...)。

于 2013-01-27T07:28:59.833 回答