Обработка смены ориентации в Android

Автор: anon
03.05.2011 14:01

Акселерометр присутствует в большей части девайсов с Android и самая базовая функция его - сообщить программе об ориентации (в хорошем смысле этого слова), в которой аппарат находится. Ориентации всего две - портретная и ландшафтная. Правильное переключение между ними - задача программиста.

Если ничего не делать, то после поворота заново создается Activity и вызывается onCreate. Для пользователя это как правило не очень приятно, ведь ему придется работать с программой, которая перезапускается если не так повернуть телефон. Способы это предотвратить:

 

  • Зафиксировать положение экрана. Например для того чтобы ориентация была только портретной, надо добавить в описание Activity в AndroidManifest.xml следующую строку:
    android:screenOrientation="portrait"
  • Добавить обработчик поворота экрана. В описании Activity в AndroidManifest.xml вставить:
    android:configChanges="keyboardHidden|orientation"

    Параметр keyboardHidden отвечает за вызов обработчика, когда экранная клавиатура открывается или закрывается. Обработчик выглядит как-то так:
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);
     
    }

    Если после смены ориентации необходимо изменить элементы интерфейса пользователя, то сделать это можно в OnConfigurationChanged

 

Подробнее здесь: Android Dev Guide

Обновлено 22.12.2011 23:20

 

Комментарии  

 
#1 ляляляля 27.03.2012 22:57
Спасибо! По больше бы таких статеек.
Цитировать
 

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


Защитный код
Обновить