Есть ли способ заблокировать ориентацию во время выполнения? Например, я хотел бы разрешить пользователю заблокировать экран в альбомной ориентации, если пользователь в настоящее время находится в альбомной ориентации, и переключить опцию меню.
android
orientation
Джаред
источник
источник
Будьте осторожны с разницей между тем, что возвращает getConfiguration, и тем, что хочет setRequestedOrientation - они оба имеют тип int, но исходят из разных определений констант.
Вот как заблокировать текущую ориентацию, разрешив при этом поворот на 180 градусов
источник
Это работает на устройствах с обратным портретом и обратным ландшафтом.
Ориентация блокировки:
Разблокировать ориентацию:
источник
"Returns the rotation of the screen from its "natural" orientation."
источник вращения . Таким образом, на телефоне сообщение «ROTATION_0 - портретный», вероятно, правильно, но на планшете его «естественная» ориентация, скорее всего, будет альбомной, и ROTATION_0 должен вернуть альбомный, а не портретный.Похоже, у меня был похожий случай. Я хотел поддержать любую ориентацию, но мне нужно было оставаться в текущей ориентации после определенного момента в рабочем процессе. Мое решение было:
При входе в защищенный рабочий процесс:
При выходе из защищенного рабочего процесса:
источник
Альтернатива ответу @pstoppani с поддержкой планшетов (как и ответ @pstoppani, это будет работать только на устройствах> 2.2) -
Протестировано на
Samsung Galaxy SIII
иSamsung Galaxy Tab 10.1
источник
||
вrotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90
и сrotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270
. Итак, у меня есть 2 сомнения :::: во-первых, почему,ROTATION_0
а неROTATION_180
во втором случае, а во-вторых, почему проверять 0 градусов с 90, а не 180 ??||
проверки обрабатывают две возможные ориентации по умолчанию на основе ландшафтной и портретной ориентации устройства.Вот мой код, вы можете заблокировать одним из этих методов свой экран и после завершения задачи разблокировать его с помощью unlockOrientation:
источник
Вот преобразование Xamarin ответа @pstoppani выше.
ПРИМЕЧАНИЕ: это для фрагмента, замените Activity. с этим. если используется в деятельности.
Это не проверено, поскольку до его использования использовался другой подход, но может быть полезен.
источник