12

ユーザーが読めるように大量のテキストを表示するアプリがあります。

横になって読んでいると、頭と画面の位置が合っていても画面が回転するのが気になります。

これを永続的にポートレートモードに設定したくないので、これを設定するアプローチを排除すると思います。

 android:screenOrientation="portrait"

マニフェストで。

理想的には、設定ページを介して自動方向変更を有効/無効にしたいです。

私の最善のアプローチは何でしょうか?

4

2 に答える 2

18

これを行うには、プリファレンス ページをアプリケーションのSharedPreferencesに書き込み、この値を読み取り、問題のテキスト ビューが読み込まれるか表示されるときにコードからActivity.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()メソッドのいずれかで指定できます。メソッドにそれを含めない唯一の理由はonCreate()、設定の変更がこのアクティビティで発生した場合、または完了時にこのアクティビティに戻る子アクティビティで発生した場合です。

編集:

OK、それがうまくいかない場合 (そして、うまくいくかどうかはわかりません)、2 つの異なるレイアウト xml ファイルを試してみてください。アクティビティ/ビューをロードするとき、保存した設定に基づいて動的にどちらか一方をロードできます。きれいではありませんが、うまくいくはずです。

于 2010-08-05T21:26:55.653 に答える