Wallpaper是由哪个程序绘制的? 如果是静态墙纸,例如系统自带的墙纸,或者从文件系统、图框选择的图片。 这种情况是先通过WallpaperManager的接口把图片剪裁后保存到WallpaperManagerService。 然后由ImageWallpaper.java通过WallpaperManager的接口把通过剪裁后的墙纸图片读出来,并绘制(draw)到墙纸窗口。 如果是动态墙纸,由动态墙纸(例如MagicSmoke)自行绘制。
App怎样才会显示墙纸背景? Wallpaper是系统级别的窗口,是由WindowManagerService维护,作为特定应用的背景显示。 如果app的窗口设置了如下属性WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER, 并且背景透明。WindowManagerService会在该App的窗口后面显示墙纸。