Android: прислушиваться к изменению ориентации? - PullRequest
24 голосов
/ 09 июня 2011

Как бы я слушал изменение ориентации в Android? и делать определенные вещи, когда пользователь переключился на ландшафт?

Ответы [ 3 ]

43 голосов
/ 09 июня 2011

У вас есть несколько вариантов:

В своем манифесте укажите:

<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.    
    }   
}

Вот хороший учебник об этом.

17 голосов
/ 09 июня 2011

В своей деятельности вы можете переопределить этот метод для прослушивания изменения ориентации и реализации собственного кода.

public void onConfigurationChanged (Configuration newConfig)

Класс Configuration имеет целочисленную константу 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;

}
5 голосов
/ 04 апреля 2016

Начиная с Android 3.2 , вам также нужно добавить « screenSize » в androidmanifest для конкретной активности

Таким образом, ваша декларация активности в xml станет

<activity android:name=".ExampleActivity"
    android:label="@string/app_name"
    android:configChanges="orientation|screenSize">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...