У меня есть приложение, которое отображает большой объем текста для чтения пользователем.
Я обнаружил, что при чтении лежа меня раздражает, что экран вращается, хотя моя голова и экран выровнены.
Я не хочу, чтобы это было постоянно в портретном режиме, поэтому я думаю, что это помешало бы установить
android:screenOrientation="portrait"
в манифесте.
В идеале я хотел бы включить / отключить автоматическое изменение ориентации через страницу настроек.
Каков мой лучший подход?
Я бы сделал это, записав свою страницу настроек в 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 ()
- это если изменение параметра происходит в этом действии или в дочернем действии, которое вернется к этому, когда оно будет выполнено.
Изменить:
Хорошо, если это не сработает (а я не совсем уверен, что это будет), возможно, вы могли бы попробовать создать два разных XML-файла макета - один с установленным screenOrientation, а другой - без него. Когда вы загружаете свой Activity / View, вы можете динамически загружать один или другой в зависимости от ваших сохраненных предпочтений. Это противно не чисто, но должно работать.