Записки программиста Программирование и не только

20Ноя/120

[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
Ну или в официальной доке.

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.