Ориентация экрана блокировки (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
требуются для
У меня была похожая проблема.
Когда я вошел
<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>
В файле манифеста это заставило эту активность отображаться в альбомной ориентации. Однако, когда я вернулся к предыдущим действиям, они отображались в пейзаже, даже если они были установлены в портрет. Однако, добавив
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
сразу после того, как раздел OnCreate целевой активности решил проблему. Поэтому я сейчас использую оба метода.
Внутри файла манифеста Android вашего проекта найдите объявление о деятельности, для которого вы хотите исправить ориентацию, и добавьте следующий фрагмент кода,
android:screenOrientation="landscape"
для альбомной ориентации и для портрета добавьте следующий код,
android:screenOrientation="portrait"