Reputation: 44862
How would I listen for orientation change in Android? and do certain things when the user has switched to landscape?
Upvotes: 34
Views: 37733
Reputation: 7082
You have a couple of choices:
Use an OrientationEventListener, which has a method called onOrientationChanged.
Use config changes:
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
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
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