Ориентация экрана блокировки (Android)

Возможный дубликат:
Как отключить изменение ориентации в Android?

Я пишу приложение для Android, которое использует вкладки с различным содержанием (действия). В одном из этих упражнений я хотел бы заблокировать ориентацию экрана в режиме "Пейзаж", но в других заданиях мне нужна нормальная ориентация (в зависимости от датчика).

То, что я делаю сейчас, это то, что я звоню

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

когда я переключаюсь в ландшафтный режим активности, и

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

когда я переключаюсь обратно на другие виды деятельности. Однако, похоже, это не работает, все приложение блокируется. Каков нормальный подход к этой проблеме?

3 ответа

В манифесте вы можете установить screenOrientation в альбомную ориентацию. Это будет выглядеть примерно так в XML:

<activity android:name="MyActivity"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>

куда MyActivity это тот, который вы хотите остаться в ландшафте.

android:configChanges=... линия мешает onResume(), onPause() от вызова, когда экран поворачивается. Без этой линии ротация останется так, как вы просили, но звонки по-прежнему будут выполняться.

Замечания: keyboardHidden а также orientation требуются для orientation,

У меня была похожая проблема.

Когда я вошел

<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>

В файле манифеста это заставило эту активность отображаться в альбомной ориентации. Однако, когда я вернулся к предыдущим действиям, они отображались в пейзаже, даже если они были установлены в портрет. Однако, добавив

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

сразу после того, как раздел OnCreate целевой активности решил проблему. Поэтому я сейчас использую оба метода.

Внутри файла манифеста Android вашего проекта найдите объявление о деятельности, для которого вы хотите исправить ориентацию, и добавьте следующий фрагмент кода,

android:screenOrientation="landscape"

для альбомной ориентации и для портрета добавьте следующий код,

android:screenOrientation="portrait"
Другие вопросы по тегам