android开发动画和壁纸,Android静态壁纸和动态壁纸的使用和理解

本文介绍了Android中如何设置静态和动态壁纸。静态壁纸可通过WallpaperManager的setBitmap、setResource和setStream方法实现。动态壁纸则需要自定义WallpaperService和Engine,实现动态绘制和动画效果。在设置动态壁纸时,需要通过ACTION_CHANGE_LIVE_WALLPAPER Intent,并通过WallpaperManager的setWallpaperComponent方法间接启动服务。文中还探讨了动态壁纸的工作原理,包括进程间通信和启动方式。
摘要由CSDN通过智能技术生成

这两天在公众号上偶然看到一篇关于设置动态壁纸的文章,觉得蛮有意思的,学习了一下,以此文章记录一下怎样给手机设置静态壁纸和动态壁纸,设置壁纸的使用方法。

静态壁纸

Android中WallpaperManager系统服务用于管理壁纸的运行与切换,并通过WallpaperManager类向外界提供操作壁纸的接口。

设置静态壁纸是通过调用系统WallpaperManager的方法来实现的,

主要分为下面三种,同一种因不同的方法参数会对应多个方法:

(1)通过bitmap设置壁纸:setBitmap

(2)通过资源文件设置壁纸:setResource

(3)通过流设置壁纸:setStream

具体例子如下:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);

try {

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

wallpaperManager.setBitmap(bitmap);

} catch (IOException e) {

e.printStackTrace();

}

注意:

(1)设置壁纸需要声明权限

(2)壁纸分系统壁纸和锁屏壁纸,但是API 24才能调用系统api设置。

比如:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);

try {

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){

wallpaperManager.setResource(R.raw.wallpaper, WallpaperManager.FLAG_SYSTEM);

}

} catch (IOException e) {

e.printStackTrace();

}

其中WallpaperManager.FLAG_SYSTEM表示系统壁纸,WallpaperManager.FLAG_LOCK表示锁屏壁纸。

既然可以设置壁纸,相对应的就可以清除壁纸,具体如下:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);

try {

wallpaperManager.clear();

} catch (IOException e) {

e.printStackTrace();

}

动态壁纸

动态壁纸是通过Android中的WallpaperService服务启动并开始进行壁纸的绘制工作,其中内部类Engine,实现了壁纸窗口的创建以及Surface的维护工作。

那怎样实现一个简单的动态壁纸呢?主要分为以下几步:

1.定义MyWallpaperServ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值