[Android] Поворот экрана
Варианта управления экраном три:
1. Запретить поворот экрана
В раздел activity
вписать
android:screenOrientation="portrait"
или
android:screenOrientation="landscape"
2. Обрабатываем поворот вручную
Т.к. метод onCreate()
вызывается не только при создании Activity
, но и при повороте экрана, можно отловить данные события.
Подробно можно почитать тут - http://developer.android.com/guide/topics/resources/runtime-changes.html (Кстати, там, возможно, опечатка)
Коротко:
Добавляем в класс Activity
метод:
@Override public Object onRetainNonConfigurationInstance() { final MyDataObject data = collectMyLoadedData(); return data; }
В котором производим сборку всех данных, которые нужно будет снова показать после поворота.
И в метод onCreate
добавляем конструкцию:
final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance(); if (data != null) { loadMyData(); }
В которой данные распаковываем обратно.
3. Запрет автоматического пересоздания Activity
В AndroidManifest.xml
дописать в раздел activity
android:configChanges="orientation|keyboardHidden"
Метод не рекомендуемый, т.к. в сложных приложениях придется самостоятельно обновлять данные внутри программы.
Подробнее можно тут: http://stackoverflow.com/questions/7818717/why-not-use-always-androidconfigchanges-keyboardhiddenorientation
Ну или в официальной доке.
Нет обратных ссылок на эту запись.
Leave a comment