Skizit
Skizit

Reputation: 44862

Android: listen for Orientation change?

How would I listen for orientation change in Android? and do certain things when the user has switched to landscape?

Upvotes: 34

Views: 37733

Answers (3)

ferostar
ferostar

Reputation: 7082

You have a couple of choices:

In your Manifest, put:

<activity android:name=".HelloAndroid"
    android:label="@string/app_name"
    android:configChanges="orientation">

And, in your Activity, override 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.    
    }   
}

Here is a good tutorial about it.

Upvotes: 63

Zain Ali
Zain Ali

Reputation: 15993

As of Android 3.2, you also need to add "screenSize" in androidmanifest for specific activity

So your activity declaration in xml will become

<activity android:name=".ExampleActivity"
    android:label="@string/app_name"
    android:configChanges="orientation|screenSize">

Upvotes: 7

Huang
Huang

Reputation: 4842

In your activity, you can override this method to listen to Orientation Change and implement your own code.

public void onConfigurationChanged (Configuration newConfig)

The Configuration Class has an int constant ORIENTATION_LANDSCAPE and ORIENTATION_PORTRAIT, there for you can check the newConfig like this:

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;

}

Upvotes: 20

Related Questions