Урок 3. Ориентация экрана устройства

Как известно, телефон или планшет пользователь может время от времени переворачивать. Так-же в настройках Android есть функция автоматического перевертывания экрана в альбомный/портретный вид в зависимости от положения устройства. Тогда часто возникает ситуация, что приложение рассчитанное на работу в портретном режиме, выглядит не функционально в альбомном режиме. Есть несколько вариантов решения данного вопроса. Первый — для альбомного и портретного режима рисовать две разные формы представления приложения. Второй — отслеживать положение устройства самостоятельно, и перерисовывать положение элементов в зависимости от ориентации. Пока рассмотрим первый вариант как самый простой.В качестве примера возьмем приложение из предыдущего урока:

Screenshot_22

 

, нажмите «Create Landscape Variation».  В левой части проекта в папке res-activity_form1 появится дополнительный файл activity_form1.xml(land).  Открыв его, увидим копию портретной формы, только в альбомом варианте расположения. Перетащим элементы так, чтобы было удобно их использовать и при данном расположении:

Screenshot_23

 

Запускаем приложение. В эмуляторе нажимаем Ctrl-F11 (поворот экрана), и наслаждаемся:

Screenshot_24 Screenshot_25

Узнать ориентацию программно

Чтобы из кода узнать текущую ориентацию, можно создать следующую функцию:

Вызовите данную функцию из нужного места, например, при щелчке кнопки и узнайте текущую ориентацию. В примере использовались две распространённые системные константы для ориентации. Есть еще константа ORIENTATION_SQUARE (квадратный экран).

В какую сторону повернуто устройство?

Хорошо, мы можем определить текущую ориентацию, но в какую сторону повернули устройство? Ведь его можно повернуть влево, вправо или вообще вверх тормашками. Напишем другую функцию:

Установить ориентацию программно и через манифест

Если вы  хотите запустить приложение в стиле «вид сбоку», то можете сделать это программно. Разместите код в методе onCreate():

Вы можете запретить приложению менять ориентацию, если добавите нужный код в onCreate().

Но указанный способ не совсем желателен. Лучше установить нужную ориентацию через манифест, прописав в элементе <activity> параметр android:screenOrientation:

Кстати, существует ещё один вариант, когда устройство полагается на показания сенсора и некоторые другие:

В статье использовались материалы с сайта  http://developer.alexanderklimov.ru/

 

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

Добавить комментарий

Ваш адрес email не будет опубликован.

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Жизнь замечательных грибов