Reputation: 645
I am using android HTC HERO 2.1 version.
The activity I write :
<activity android:name=".gogogo"
android:label="@string/app_name"
android:theme="@style/Theme.mine"
android:screenOrientation="landscape"
android:configChanges="orientation">
let my orientation change to landscape.
However, I figured out that every time I pressed "power" button and then come back to my activity, it always start at portrait.
I tried the game : TEETER , which was written not by me. Has the same problem too, any one know how to fix it??
Edit: it always start at portrait.
--> I mean, if you come back from power, you have to scroll down to do everything, there is something like screen lock.
You can see that there is a "status bar" at the top of the screen and at this time, the orientation is "portrait
". So after You scroll the "screen lock" a little bit down, you can see the activity (such as TEETER) is at "portrait
" state. When you scroll all the way down, the activity's orientation will suddenly change to the state "landscape
".
So the conclusion is : My activity is forced to orient once. And I really want to know how to fix it!
Upvotes: 3
Views: 3236
Reputation: 6608
Not sure if it's the same problem, but here is the problem I had :
It seems to be the same problem as another question : Disable orientation but detect orientation
I think the problem is that once you press the power button, the lock screen forces the orientation as portrait. In the onConfigurationChanged I get an orientation change right when I press the power button, which was unexpected because I told to explicitly lock the orientation. The fact is that when another activity which comes in front forces the orientation, the other activities get notified of the orientation change, even if they asked for an explicit orientation.
Here's my workaround :
Seems a bit complicated, but that's what I had to go through in my particular case, since my views are created dynamically and directly attach to the default FrameLayout of the activity. Maybe I then missed some default behaviors because of that, but this way I could achieve the reactivity I was looking for.
Upvotes: 1
Reputation: 855
Not sure whether this can be called a fix, but it's kind of a work-around.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (hasFocus)
setContentView(mGameView);
else
setContentView(mEmptyView);
}
Where mGameView is your ordinary content and mEmptyView is just a simple View object. The activity will still be drawn in portrait for a frame or two, but it will not be visible to the user.
I've tested this with HTC Hero and Nexus S.
Upvotes: 0
Reputation: 12027
Hai Steven Shih: Pls go through this page of developer guide.
http://developer.android.com/guide/topics/manifest/activity-element.html
and try this line
android:windowSoftInputMode="stateUnspecified|adjustPan"
Upvotes: 1