Обработка смены ориентации в Android
Автор: anonymous
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
