Чтобы обнаружить вращение Действия, не мешая его ходу, вы можете сделать следующее:
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
// Check for the rotation
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "LANDSCAPE", Toast.LENGTH_SHORT).show();
} else if (config.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "PORTRAIT", Toast.LENGTH_SHORT).show();
}
}
Кроме того, вам нужно убедиться, что в вашем манифесте ваша активность разрешает configChanges для ротации
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
Важно . Начиная с Android 3.2 и более поздних версий (API 13+) "размер экрана" также изменяется, когда устройство переключается между книжной и альбомной ориентацией. Если вы хотите предотвратить перезапуск среды выполнения из-за изменения ориентации при разработке для этого конкретного уровня API (13+), обязательно объявите: android:configChanges="orientation|screenSize"
-- // --
ИЗМЕНИТЬ
Используя атрибут configChanges
, ваша активность не будет воссоздана при изменении конфигурации.
Дополнительную информацию можно найти в документации Google здесь
Android:configChanges
Перечисляет изменения конфигурации, которые действие обработает само. Когда изменение конфигурации происходит во время выполнения, действие закрывается и перезапускается по умолчанию, но объявление конфигурации с этим атрибутом предотвратит перезапуск действия. Вместо этого действие продолжает работать, и вызывается его метод onConfigurationChanged().
Что вы можете сделать, так это управлять вращением с помощью флага, и если вызывается onConfigurationChanged()
, вы можете сами вызвать Activity onCreate()
. Если нет, onCreate() будет вызываться только при первом создании экземпляра Activity.
person
Ricardo Vieira
schedule
17.08.2016