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?
Set app background to be the same as home screen wallpaper
Asked Answered
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.
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"
/>
© 2022 - 2024 — McMap. All rights reserved.