重複している可能性があります:
Androidで向きの変更を無効にする方法は?
私は、異なる内容(アクティビティ)のタブを使うAndroidアプリケーションを書いています。これらの活動の1つでは、画面の向きを「横」モードに固定したいのですが、他の活動では、(センサーによると)通常の向きにしたいです。
私が今やっていることは私が呼んでいるということです。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
横長モードのアクティビティに切り替えたとき
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
他の活動に戻ると。しかし、これではうまくいかないようで、アプリケーション全体が動かなくなります。この問題に対する通常のアプローチは何ですか?
マニフェストでは、screenOrientationをlandscapeに設定できます。 XMLでは、このようになります。
<activity Android:name="MyActivity"
Android:screenOrientation="landscape"
Android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>
ここでMyActivity
はあなたが風景の中にいたいものです。
Android:configChanges=...
行は、画面が回転したときにonResume()
、onPause()
が呼び出されるのを防ぎます。この線がなければ、回転はあなたが要求したようにとどまるでしょうが、呼び出しはまだ行われるでしょう。
注:keyboardHidden
およびorientation
は<Android 3.2(APIレベル13)では必須であり、orientation
だけでなく、3つのオプションすべてが3.2以上で必要です。
私は同様の問題を抱えていました。
入ったとき
<activity Android:name="MyActivity" Android:screenOrientation="landscape"></activity>
マニフェストファイルでは、これによってそのアクティビティが横長に表示されていました。しかし、私が以前の活動に戻ったとき、それらはポートレートに設定されていましたが、それらはlanscapeに表示されました。しかし加えることによって
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ターゲットアクティビティのOnCreateセクションが問題を解決した直後。だから私は今両方の方法を使用します。
プロジェクトのAndroidマニフェストファイル内で、向きを修正したいアクティビティ宣言を見つけて、次のコードを追加します。
Android:screenOrientation="landscape"
横向きと縦向きの場合は、次のコードを追加します。
Android:screenOrientation="portrait"