Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent Live Wallpaper orientation change when an application is opened and orientation is changed?

I'm having an orientation issue with a Live Wallpaper that I wrote. Basically the canvas will rotate depending on the application opened above it. I tested this and realized that the onSurfaceChanged() method is firing when I return to the home screen from a previously opened application who's orientation was changed.

I suppose a better question would be, why does my Live Wallpaper Surface Change when an application is opened and it's orientation changed? Is there a way to prevent my Live Wallpaper orientation from ever changing? Thanks, hope that makes sense?

like image 438
worked Avatar asked Dec 07 '10 02:12

worked


People also ask

How to handle changes in screen orientation?

If you want to manually handle orientation changes in your app you must declare the "orientation" , "screenSize" , and "screenLayout" values in the android:configChanges attributes. You can declare multiple configuration values in the attribute by separating them with a pipe | character.

How do you change orientation when retaining data?

Another most common solution to dealing with orientation changes by setting the android:configChanges flag on your Activity in AndroidManifest. xml. Using this attribute your Activities won't be recreated and all your views and data will still be there after orientation change.

What does screen orientation mean?

Screen Orientation is defined as the orientation in which graphics are painted on the device. For example, the figure below has a device in a vertical and horizontal physical orientation, but a portrait screen orientation. For physical device orientation, see the orientation section of Device Motion.

How to change screen orientation in android studio?

In AndroidManifest. xml file add the screenOrientation attribute in activity and provides its orientation. In this example, we provide "portrait" orientation for MainActivity and "landscape" for SecondActivity.


2 Answers

You can handle screen orientation from within the android.service.wallpaper.WallpaperService.Engine class with the following method:

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)

... just handle the event accordingly.

You CANNOT add android:configChanges nor android:screenOrientation to a WallpaperService! (Which you are using when creating a live wallpaper)

I would have added this as a comment to "Anirudha"'s answer, but I don't have enough reputation to do so.

like image 72
Harry Silver Avatar answered Sep 23 '22 16:09

Harry Silver


Android application restarts the activity when the orientation changes. You can either use

  1. android:configChanges in your manifest. The activity is shut down and restarted by default, when a configuration change occurs at runtime, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its onConfigurationChanged() method is called.
  2. use android:screenOrientatin = "portrait" or "landscape" it will force the app to run in the mode you specify. However it will not prevent the activity from being shut down and restarted.
like image 34
Anirudha Agashe Avatar answered Sep 20 '22 16:09

Anirudha Agashe