Как мне слушать изменения ориентации в Android? и делать определенные вещи, когда пользователь переключился на пейзаж?
Android: послушайте изменение ориентации?
Ответ 1
У вас есть несколько вариантов:
Используйте OrientationEventListener, у которого есть метод с именем onOrientationChanged.
Используйте изменения конфигурации:
В своем манифесте укажите:
<activity android:name=".HelloAndroid"
android:label="@string/app_name"
android:configChanges="orientation">
И в своей деятельности переопределите onConfigurationChanged
:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int newOrientation = newConfig.orientation;
if (newOrientation == Configuration.ORIENTATION_LANDSCAPE) {
// Do certain things when the user has switched to landscape.
}
}
Вот хороший учебник об этом.
Ответ 2
В своей деятельности вы можете переопределить этот метод, чтобы прослушать Orientation Change и реализовать свой собственный код.
public void onConfigurationChanged (Configuration newConfig)
Класс Configuration
имеет константу int ORIENTATION_LANDSCAPE
и ORIENTATION_PORTRAIT
, там вы можете проверить newConfig следующим образом:
super.onConfigurationChanged(newConfig);
int orientation=newConfig.orientation;
switch(orientation) {
case Configuration.ORIENTATION_LANDSCAPE:
//to do something
break;
case Configuration.ORIENTATION_PORTRAIT:
//to do something
break;
}
Ответ 3
Как и для Android 3.2, вам также нужно добавить " screenSize" в androidmanifest для конкретной активности
Итак, ваше объявление активности в xml станет
<activity android:name=".ExampleActivity"
android:label="@string/app_name"
android:configChanges="orientation|screenSize">
Ответ 4
Как насчет событий ориентации, перевернутой из пейзажа, чтобы изменить пейзаж или портрет, чтобы изменить портрет?