ほとんどの場合、アクティビティを横向きに固定するように指定しました。 具体的には、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);
}
これにより、永遠にスタックしてしまいました:)