Intereting Posts
Пользовательский стиль поиска в Android с использованием изображений с девятью патчами Как программно просматривать другую языковую клавиатуру в приложении Android? Как я могу наложить кнопку «назад» и «следующий» в окне «выбрать сеть Wi-Fi»? Номер строки Edittext и текущее положение курсора. Масштабирование фонового изображения для обертывания содержимого макета Должен ли я использовать getApplicationContext или Activity.this в долгосрочной перспективе AsyncTask Android: Навигация Ящик вертикальная тень Пользовательский диапазон подчеркивания текста с пунктирной линией Android Убедитесь, что фотографии сохранены с той же ориентацией, что и они были сделаны? Как запустить Android Kernel? Действие не найдено для обработки Intent with action.DIAL Почему не установленVisibility работает на Android ProgressBar? Заполнение ExpandableListView данными SQLite Как вы делитесь проектом Android? Почему ping работает на некоторых устройствах, а не на других?

Как переключить блокировку ориентации в Android?

Я хочу создать флажок в моей настройке «Активность», которая позволяет пользователю переключать ориентацию.

В подобных вопросах люди пишут только о полной блокировке ориентации (путем переопределения методаConfigurationChanged или добавления configChanges в AndroidManifest.xml) или обеспечения ориентации (посредством setRequestedOrientation).

Есть ли способ переключить блокировку ориентации?


EDIT: Я создал метод, который устанавливает предпочтительную ориентацию в одно из трех состояний: пейзаж, портрет и датчик. Этот метод используется в сочетании с поиском ориентации getResources().getConfiguration().orientation) И сохранения выбранной ориентации в предпочтениях. Затем в активности, которая должна блокировать ориентацию, я запускаю этот метод с предпочтительной ориентацией от предпочтений.

 private static void setActivityOrientation(Activity activity, int preferenceOrientation) { if (preferenceOrientation == Configuration.ORIENTATION_LANDSCAPE) { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ // You need to check if your desired orientation isn't already set because setting orientation restarts your Activity which takes long activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } else if (preferenceOrientation == Configuration.ORIENTATION_PORTRAIT) { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } else { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_SENSOR){ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } } } 

Solutions Collecting From Web of "Как переключить блокировку ориентации в Android?"

Я не понимаю, в чем проблема с setRequestedOrientation.

SCREEN_ORIENTATION_SENSOR в сочетании с пейзажем или портретом кажутся вам нужными, нет?

 if(....) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); else if(....) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); else if(....) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);