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


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:两种展示方式造成了不同的结果,有人知晓的话,请告知。

猜你喜欢

转载自blog.csdn.net/sinat_21693123/article/details/65446851