Чтобы объявить, что ваша деятельность обрабатывает изменения конфигурации, отредактируйте соответствующий <activity>
элемент в вашем файле манифеста, чтобы включить атрибут android:configChanges
со значением, которое представляет собой конфигурацию, которую вы хотите обработать ,
Например, следующий манифест код объявляет деятельность, которая обрабатывает как изменение ориентации экрана и изменение доступности клавиатуры:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
Теперь, когда одна из этих конфигураций меняются, MyActivity не запускается. Вместо этого MyActivity получает вызов onConfigurationChanged(). Этот метод передается объекту Configuration, который определяет новую конфигурацию устройства. Читая поля в Конфигурации, вы можете определить новую конфигурацию и внести соответствующие изменения, обновив ресурсы, используемые в вашем интерфейсе.
Например, следующая реализация onConfigurationChanged() проверяет текущую ориентацию устройства:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
или просто
screenOrientation является атрибутом элемента деятельности. Ориентацией активности андроида может быть портрет, пейзаж, датчик, неопределенный и т. Д. Вы должны определить его в файле AndroidManifest.xml. Например:
<activity
android:name="com.example.screenorientation.MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
>
Но согласно моему опыту, вам нужно установить Для ориентации Android 3.2 и выше, вы должны ОБА
android:configChanges="orientation|screenSize"
Ссылка: http://developer.android.com/guide/topics/resources/runtime-changes.html
EDIT:
ориентации Android экран Lifecycle
Мы могли бы иметь некоторую путаницу на ориентацию андроид экрана изменить жизненный цикл активности Android. Иногда вы можете заметить, что ваша активность возобновляется, а вы поворачиваете устройство. Иногда ничего не происходит. Ниже приведено простое правило для жизненного цикла изменения ориентации экрана Android.
. Если у вас уже есть @Override
функция в вашем java-коде (в вашем классе активности Android) для управления Android-ориентацией экрана Android. Тогда ваша активность никогда не будет перезагружена для каких-либо изменений ориентации экрана.
. Если вы не выполняете функцию @Override onConfigurationChanged()
, как указано выше, ваша работа будет возобновлена каждый раз, когда любое изменение ориентации экрана произойдет на вашем устройстве. Это означает, что ваша активность сначала уничтожит, вызвав API onDestroy()
, а затем метод onCreate()
снова вызовет вашу текущую активность для ее перезапуска.
. Чтобы правильно обрабатывать состояние перезапуска вашей активности, вам необходимо восстановить прежнее состояние с помощью обычного жизненного цикла Activity, в котором ОС Android вызывает метод onSaveInstanceState()
, прежде чем он уничтожит вашу активность. Чтобы вы могли сохранять свои данные (значения переменных) и состояние вашего приложения. Затем вы можете восстановить предыдущее состояние во время вызова onCreate()
или onRestoreInstanceState()
вашего действия.
Надеюсь, это поможет вам.
Добавить 'android: screenOrientation =" portrait "' в файле манифеста под действием, в котором у вас есть вид. ' –
Это не деятельность .. мой взгляд открыт, когда громкость вниз кнопка нажмите .. –
Но ваше мнение должно быть внутри чего-то? Покажите нам свой код. –