开发者

Orientation issue with landscape mode

I am displaying Timer on a screen .

After starting the Timer , I am changing the orientation from the portrait to landscape mode. In order to avoid the timer getting reset when changing from the portrait to landscape mode , I am adding the following code to the activity declaration in the manifest:

android:configChanges="orientation"

The problem I am facing is that , when t开发者_Go百科he screen is switching from the portrait to landscape mode , the layout which gets displayed is same as portrait & not in landscape mode. Only a part of the screen of the landscape orientation is being occupied.

Is there any way by which we can avoid resetting the timer from changing from the portrait to landscape mode & also have a proper landscape layout?

Kindly provide your inputs.

Thanks in advance.


There is a simple way of doing this.

  • if you have two different layouts for landscape and portrait then let the android handle all the stuff for you. i mean do not override methods onConfigurationChange() method unless strictly required and do not add android:configChanges="orientation". just make different folders for portrait mode and landscape mode. viz. layout and layout-land....

  • To save present state of views use bundle. whenever orientation changes android reload activity and call onCreate() method. This saved bundle is passed in onCreate() method. Now you can retrieve views' state from this bundle.

now next question will be how to use this bundle. Then here is the quick example.

override onSavedInstanceState() method to save bundle.

Thanks.


Is there any way by which we can avoid resetting the timer from changing from the portrait to landscape mode?

Yes, store the value somewhere during onPause and read it during onResume.

Also have a proper landscape layout

Read up on Providing Resources, in particular table 2's "Screen orientation" section which also links to a very nice page about handling runtime changes.


All you need to do is make the manifest file set the screenOrientation="landscape"

    <activity android:name=".main"
              android:label="@string/app_name"
              android:screenOrientation="landscape">
        <intent-filter>

That turns off the auto sensor on only the form that you name to have landscape.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜