Víctor Albertos
Víctor Albertos

Reputation: 8293

Issue when trying to fix orientation screen to natural or default orientation

I would like to lock the screen orientation specifying the configuration in the AndroidManifest, instead of doing it programmatically. So I've ended up with the following approach:

values/config.xml

<resources>
    <integer name="orientation">1</integer>
</resources>

values-sw600dp/config.xml

<resources>
    <integer name="orientation">0</integer>
</resources>

If I check the value’s resource programmatically

getResources().getInteger(R.integer.orientation)

I get the expected value: 0 for tablets and 1 for handsets, which is the value specified by the framework for landscape and portrait orientation respectively.

But if I use this resource in the AndroidManifest:

<activity
            android:name="activities.InitialConfigActivity_"
            android:noHistory="true"
            android:screenOrientation="@integer/orientation" />

The activity always launches in portrait mode, regardless if it is a tablet or a handset device.

Any thoughts?

Thanks!

Upvotes: 0

Views: 227

Answers (1)

Bob Snyder
Bob Snyder

Reputation: 38289

Edit: I originally read your question to mean you wanted complete control over the start-up orientation. If you are satisfied to get the natural/default orientation, then use nosensor as described below.


This may not qualify as an answer--I had more to share than could be put in a comment.

You've probably already looked at the discussion in these related issues: related-1, related-2, related-3.

In my experience, when an issue has been investigated by a number of different people for a period of four years, with no solution found, it usually means there is no solution.

One option might be to use the nosensor orientation in your manifest:

android:screenOrientation="nosensor"

This starts the activity in the device's "default" or "natural" orientation. On my devices this is: phone=portrait, 7-inch-tablet=portrait, 10-inch-tablet=landscape. Won't work for you if you want landscape for 7-inch tablet.

This post includes code for determining what a device's default orientation is.

Upvotes: 2

Related Questions