Android: Disable rotations by 90°, but enable rotations by 180°

janjonas picture janjonas · Dec 6, 2010 · Viewed 7.9k times · Source

I would like to create an Android app (for a tablet) that should be only displayed in landscape orientation, e.g. the app should ignore rotations by 90°, but support rotations by 180°.

Adding android:screenOrientation="landscape" in the manifest causes the app to ignore all rotations, (even the 180° rotations), i.e. rotating the device by 180° shows the application upside down.

Without the android:screenOrientation attribute my app is displayed "correctly" in all four positions. Rotation the device by 180° flips the UI vertically resp. horizontally.

When rotation the device the following log messages are created (maybe this helps?):

[...]: INFO/WindowManager(1290): Setting rotation to 1, animFlags=0
Rotation is a value between 0 and 3 representing the current orientation.

Summarized: Is it possible to enable an app to support both landscape orientations?

Answer

olivierg picture olivierg · Jan 6, 2011

The new sensorLandscape screen orientation is apparently meant for this purpose.

Eg, you could do:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

Unfortunately, this is only available as of Android 2.3. I'm currently looking for a way to achieve this on Froyo.