Set app background to be the same as home screen wallpaper
Asked Answered
B

2

9

I want to set my app's background to be the same as my home screen's wallpaper. How can I get the home screen wallpaper in activity.xml? Can I do that?

Bryanbryana answered 26/7, 2014 at 13:31 Comment(0)
R
13

Use

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
final Drawable wallpaperDrawable = wallpaperManager.getDrawable();

to get the current wallpaper. Then set it as your own app's background:

LinearLayout ll = (LinearLayout) findViewById(R.id.myLinearLayout);//Substitute with your layout
ll.setBackground(wallpaperDrawable); 

All this should happen in the onCreate() if you wish to have it as the initial background.

Roughneck answered 26/7, 2014 at 14:11 Comment(0)
S
8

While @Robin's answer does set the Activity's background to the home screen's wallpaper, it displays the whole drawable at once, which in most cases distorts it (horizontally compresses it).

A different solution, which may be better or worse depending on your precise needs, is to set your Activity's theme to one that inherits from Theme.Wallpaper. I find this somewhat easier, and the system automatically shows you an appropriate slice of the wallpaper, which is what I want and expect.

res/styles.xml:

<style name="wallpaper_theme" parent="@android:style/Theme.Wallpaper">
</style>

AndroidManifest.xml:

<activity
    ...
    android:theme="@style/wallpaper_theme"
/>
Sutter answered 21/11, 2014 at 23:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.