android 系统桌面设置为背景的方法

来源:互联网 发布:数学算法 编辑:程序博客网 时间:2024/05/18 02:27

1.静态壁纸(无须设置theme)

WallpaperManager manager =WallpaperManager.getInstance(this); Drawable drawable=manager.getDrawable();

此时当drawable 就是我们获取的系统壁纸.在不设置theme 时,我们获取的是一整张壁纸,不能按照手机homescreen 的屏幕数去展示当前屏幕对应的已经剪裁的壁纸。设置android:theme=”@android:style/Theme.Wallpaper.NoTitleBar”
之后可以完美解决此问题。

2.动态壁纸
动态壁纸其实就是一个完整的app .目前了解到唯一一个展示动态壁纸的方法是:在展示壁纸的Activity中设置theme。

android:theme="@android:style/Theme.Wallpaper.NoTitleBar"

设置theme 之后的获取的动态壁纸的方法是:

WallpaperManager manager =WallpaperManager.getInstance(this); Drawable drawable=manager.getDrawable();

判断是静态壁纸还是动态壁纸的方法

WallpaperManager manager =WallpaperManager.getInstance(this);  WallpaperInfo info = manager.getWallpaperInfo();        if (info == null) {//静态壁纸        } else {//动态壁纸        }

在activity 中展示动态壁纸的坑(设置theme之后)

若以以下这种方式

  LinearLayout ll = new LinearLayout(this);  ll.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,       LinearLayout.LayoutParams.MATCH_PARENT));setContentView(ll); WallpaperManager manager = WallpaperManager.getInstance(this); Drawable drawable=manager.getDrawable(); ll.setBackgroundDrawable(drawable);

无法展示动态壁纸。

正确展示壁纸的方式:

 setContentView(R.layout.activity_use); View view = View.inflate(this, R.layout.activity_use, null);  WallpaperManager manager = WallpaperManager.getInstance(this); Drawable drawable=manager.getDrawable(); view .setBackgroundDrawable(drawable);

ps:两种展示方式造成了不同的结果,有人知晓的话,请告知。

0 0
原创粉丝点击