Android Wallpaper分析

Android动态墙纸的本质是一个“Service”,这个Service能够被主界面Launcher加载。那么Launcher是如何能识别这个包含动态墙纸Service的APK的呢?AndroidManifest.xml文件的intent-filter的action泄露了天机:

<action android:name="android.service.wallpaper.WallpaperService" />  

不错,系统正式通过APK的这个action把其当做一个动态墙纸加载进LivePicker列表,用户在LivePicker列表里选择自己喜欢的动态墙纸,进而将动态墙纸显示进Launcher的背后。

需要指出的是,Android的动态墙纸虽然似乎是显示在Launcher的背景里,但其实这只是假象,动态墙纸和Launcher是完全不同的两个进程,只不过Launcher和动态墙纸的进程可以通过框架里的WallpaperManager进行进程间通信罢了,用户在Launcher桌面滑动、点击屏幕时有的动态墙纸能产生交互效果,实际上就是这个进程通信完成的。如果你通过代码将Launcher的背景设置为非透明的,比如以不透明的图片或者颜色作为背景,那么,你将看不到任何动态墙纸效果,当然,这样的话,静态墙纸你也不会看到了。


你可能感兴趣的:(android,框架,service,action)