Screen orientation and values in manifest.xml

Kostadin picture Kostadin · Mar 21, 2012 · Viewed 84.5k times · Source

I want to use all activities in my form in landscape or portrait. When user select orientation - this is valid for all activities. Tried with "behind" option orientation. According to Google - orientation will depend on previous activity.

My first activity use setRequestedOrientation to set selected from user orientation.

Next activities have to follow same orientation. Do I have to put setRequestedOrientation in their code too? Or really on 'behind' parameter in manifest? Putting setRequestedOrientation may be cause onCreate again?

UPDATE:
Tried "portrait" and setRequestedOrientation() - result is onCreate was called 2 times.

Problem is in next activity -> because of "portrait" in first activity - android started next activity with same orientation. It ignores "landscape" orientation which was set by me.

Answer

Rajkiran picture Rajkiran · Mar 21, 2012

If you want to have fixed orientation for your activities then you can use-

android:screenOrientation="portrait"

android:screenOrientation="sensorPortrait"

as an attribute to that activity in that manifest. But if you want to set the orientation runtime depending upon what was the previous orientation while launching the application, you need to check for the previous orientation in onCreate() and then set it to that value programmatically there itself using setRequestedOrientation()

UPDATE: As pointed by @s.co.tt use android:screenOrientation="sensorPortrait" for a better support on tablets.

For more details on the different values for android:screenOrientation and what each of them do, look at the docs:

https://developer.android.com/guide/topics/manifest/activity-element.html#screen