Урок 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 не будет опубликован. Обязательные поля помечены *

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