Страницы

Поиск по вопросам

пятница, 1 февраля 2019 г.

Как запретить смену ориентации экрана программно?

Проведя пальцем по экрану сверху вниз, мы попадаем вверху в меню с кнопками. Например: звук (изменить звук), поворот экрана (разрешаем или запрещаем поворот экрана) и т.д.

А можно ли программно нажать на кнопку "Поворот экрана", а именно: запретить поворот экрана?
Иными словами: как программно запретить поворот, а по завершении программы вернуть в положение перед запуском. Т.е. если перед запуском был ландшафт, то он и останется им до конца работы приложения, а если был портрет, то он тоже останется до конца работы приложения?
Вариант с android:screenOrientation="portrait" в Манифесте не предлагать. Он не решает данную проблему!
Благодарю, заранее...


Ответ

Ответы с en-SO раз и два
Получаем два варианта: ландшафт и портрет
int orientation=this.getResources().getConfiguration().orientation; if(orientation==Configuration.ORIENTATION_PORTRAIT){ //портрет } else{ //ландшафт } Получаем 4 варианта с углами поворота относительно дефолтного значения
int rotation = getWindowManager().getDefaultDisplay().getRotation(); int angle = 0; switch (rotation) { case Surface.ROTATION_90: angle = -90; break; case Surface.ROTATION_180: angle = 180; break; case Surface.ROTATION_270: angle = 90; break; default: angle = 0; break; }
Теперь устанавливайте полученную ориентацию:
setRequestedOrientation(/* сюда поместите одно из значений констант класса ActivityInfo */);

Комментариев нет:

Отправить комментарий