8

ほとんどの場合、アクティビティを横向きに固定するように指定しました。 具体的には、Activity が既に実行されていて、その新しいインスタンスを Eclipse から起動すると、Activity は Portrait で開始され、すぐに Landscape に変更されますが、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

メニフェストで向きを定義します。

screenOrientation="ランドスケープ"

また

アクティビティで setContentView(...) の前に setRequestOrientation(...) を設定します。

于 2013-01-27T07:28:59.833 に答える