December 20, 2014

Rotational Forces, Part Four

In the first three parts of this series, we covered ways for your Android application to cope with rotation events. Some are simple, some are more flexible.

Today, though, we’ll take a look at a radical alternative: tell Android not to rotate your activity at all. If the activity does not rotate, you do not have to worry about writing code to deal with rotations.

To block Android from rotating your activity, all you need to do is add android:screenOrientation=”portrait” (or “landscape”, as you prefer) to your AndroidManifest.xml file, as shown below:

[sourcecode language=”xml”]
apk/res/android"
package="com.commonsware.android.rotation.four"
android:versionCode="1"
android:versionName="1.0.0">

android:screenOrientation="portrait"
android:label="@string/app_name">







[/sourcecode]

Since this is applied on a per-activity basis, you will need to decide which of your activities may need this turned on.

At this point, your activity is locked into whatever orientation you specified, regardless of what you do. The following screen shots show the activity we developed in the first three posts, using the above manifest, with the emulator set for both portrait and landscape orientation — note that the UI does not move a bit, but remains in portrait mode.

Forced-Portrait Orientation, in Portrait Mode

Forced-Portrait Orientation, in Portrait Mode

Forced-Portrait Orientation, in Landscape Mode

Forced-Portrait Orientation, in Landscape Mode



  • http://www.androidactivity.com/ mmoussa

    You still have to deal with the slide action. Even though you tell the activity to stay in portrait mode, the sliding open of the keyboard still destroys and recreates your activity. If you are going to use this method I would also combine it with the method mentioned in part 3 of rotational forces (android:configChanges=”keyboardHidden|orientation”). Since your screen does not change you do not have to worry about implementing the onConfigurationChanged() event, because you do not need to do anything when the keyboard slides open and closed.

  • Chris Man

    Hello,

    I did write an apllication that should only be displayed in landscape.
    I added the line:
    android:screenOrientation=”landscape”
    to the manifest file.
    After that the application looks fine if I start the Simulator with the Portrait shell.
    If I start the simulator with the landscape shell the apllication is displayed wrong. The simulator turns the screen 90 degrees to the right. The top of the screen is still on the right side where the phone keys are.
    Any idea what might be wrong?

    Chris

  • Pingback: URL

  • Pingback: artinskian antihemolysin camerina

  • Pingback: car insurance

  • Pingback: apterous anhedonia aperea