Intereting Posts
Mailto: ссылки не поддерживаются в Android? Получение исключений java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions после обновления до новой firebase Android Gradle Jacoco: автономное измерительное оборудование для интеграционных тестов Функциональный тест Android; Отправить географическое местоположение в эмулятор Запуск эмулятора Android на компьютере с процессором AMD Переключение страниц в ViewPager не является гладким Обнаружение изменения состояния сети с помощью JobSchedulers в Android Не найден ресурс, который соответствует указанному имени (в 'title' со значением '@ string / action_settings') Android asynctask для отправки обратных вызовов в ui Синхронизированное воспроизведение звука на отдельных устройствах Android Ошибка: не удалось запустить SDK-инструмент mksdcard Как начать намерение, если контекст не является контекстом активности, а контекстом приложения Применение матричных преобразований к BoundingBox Android snapchat / MSQRD похожи на наклейки на лицо Флеш анимации CSS3 на Android 2.2 (webkit-transform: translate (..) scale (..) в то же время)

Программное включение / отключение поворотов экрана в Android

У меня есть приложение, которое отображает большой объем текста для чтения пользователем.

Я обнаружил, что, читая при лежании, меня раздражает, что экран вращается, хотя моя голова и экран выровнены.

Я не хочу, чтобы это было постоянно в портретном режиме, поэтому я думаю, что это исключало бы

android:screenOrientation="portrait" 

В манифесте.

В идеале я хотел бы включить / отключить автоматические изменения ориентации с помощью страницы предпочтений.

Какой был бы мой лучший подход?

Solutions Collecting From Web of "Программное включение / отключение поворотов экрана в Android"

Я сделал бы это, указав мою страницу предпочтений в 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() – это если изменение этого параметра происходит в этом onCreate() активность, которая вернется к этому, когда это будет сделано.

Редактировать:

Хорошо, если это не работает (и я не уверен, что это будет), возможно, вы можете попробовать иметь два разных файла xml-макета – один с набором screenOrientation, а другой без него. Когда вы загружаете свой Activity / View, вы можете динамически загружать тот или другой на основе ваших сохраненных настроек. Это противно не чисто, но это должно сработать.

Добавить эту строку внутри функции onCreate (). Это работает …

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);