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?

Darshan Rivka Whittle
  • 32,989
  • 7
  • 91
  • 109
virho
  • 149
  • 2
  • 2
  • 9

2 Answers2

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.

Robin Ellerkmann
  • 2,083
  • 4
  • 29
  • 34
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"
/>
Darshan Rivka Whittle
  • 32,989
  • 7
  • 91
  • 109