プログラムでAndroidの画面回転を有効化/無効化
-
26-09-2019 - |
質問
Iで読み取るためにユーザのために大量のテキストを表示するアプリケーションを持っている。
私が横たわっている間読んだとき、私は画面の回転が私の頭と画面が整列しているにもかかわらず、ことをイライラすることを発見しました。
私は、これはの設定のアプローチを排除するだろうと思うので、私は、これはポートレートモードで恒久的に設定する必要はありません
android:screenOrientation="portrait"
マニフェスト。で
理想的には、私は好みのページを経由して/無効に自動の向きの変更を可能にしたいと思います。
私の最善のアプローチは何でしょう?
解決
私は SharedPreferences 私のアプリケーションのために、この値を読み取り、活動を呼び出します。 setRequestedOrientation()の問題のテキストビューがロードされるか、または表示されているコードから。
例えば、
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("fix_orientation_to_portrait", false)) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
このはonCreate()
またはonResume()
方法のいずれかにすることができます。設定の変更は、この活動では、またはそれが行われたときに、この1に戻ってくる子アクティビティに発生した場合。
onCreate()
方法でそれを持っていない唯一の理由は、
の編集の
それは仕事(と私は本当にわからそれはしませんよ)いない場合は、OK、多分あなたは二つの異なるレイアウトのxmlファイルを持って試みることができる - screenOrientationが設定された1、およびその他なし。あなたのアクティビティ/ビューをロードするときは、動的に保存した設定に基づいて、どちらか一方をロードすることができます。それの<ストライキ>厄介なストライキ>きれいではないが、それは動作するはずです。
他のヒント
この行のonCreate()内の関数を追加します。それは働いている...
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
所属していません StackOverflow