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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值