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