Set app background to be the same as home screen w

2019-04-23 00:07发布

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?

2条回答
男人必须洒脱
2楼-- · 2019-04-23 00:32

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.

查看更多
放荡不羁爱自由
3楼-- · 2019-04-23 00:40

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"
/>
查看更多
登录 后发表回答