anita-austvika-1132037-unsplash.jpg
最近搞了一下Android的动态壁纸,像实现“萤火视频桌面”那样,本来以为很难的,但是了解了一下感觉还是很容易的。
Android壁纸的实现和管理分为三层:
只想了解动态壁纸的看第一个就好了
WallpaperService与Engine
壁纸运行在一个Android服务之中,这个服务的名字叫做WallpaperService。当用户选择了一个壁纸之后,此壁纸所对应的WallpaperService便会启动并开始进行壁纸的绘制工作。Engine是WallpaperService中的一个内部类,实现了壁纸窗口的创建以及Surface的维护工作。这一层次的内容主要体现了壁纸的实现原理。
WallpaperManagerService
这个系统服务用于管理壁纸的运行与切换,并通过WallpaperManager类向外界提供操作壁纸的接口。这一层次主要体现了Android对壁纸的管理方式。
WindowManagerService
用于计算壁纸窗口的Z序、可见性以及为壁纸应用窗口动画。这一层次主要体现了Android对壁纸窗口的管理方式。
实现
首先静态壁纸是很简单的,大概就是如下几种方法,我也没有试过,
使用WallpaperManager的setResource(int ResourceID)方法
使用WallpaperManager的setBitmap(Bitmap bitmap)方法
使用WallpaperManager的setStream