Android Wallpaper分析
2016-04-27 19:46
751 查看
Android动态墙纸的本质是一个“Service”,这个Service能够被主界面Launcher加载。那么Launcher是如何能识别这个包含动态墙纸Service的APK的呢?AndroidManifest.xml文件的intent-filter的action泄露了天机:
<action android:name="android.service.wallpaper.WallpaperService" />
[html] view
plain copy
<action android:name="android.service.wallpaper.WallpaperService" />
不错,系统正式通过APK的这个action把其当做一个动态墙纸加载进LivePicker列表,用户在LivePicker列表里选择自己喜欢的动态墙纸,进而将动态墙纸显示进Launcher的背后。
需要指出的是,Android的动态墙纸虽然似乎是显示在Launcher的背景里,但其实这只是假象,动态墙纸和Launcher是完全不同的两个进程,只不过Launcher和动态墙纸的进程可以通过框架里的WallpaperManager进行进程间通信罢了,用户在Launcher桌面滑动、点击屏幕时有的动态墙纸能产生交互效果,实际上就是这个进程通信完成的。如果你通过代码将Launcher的背景设置为非透明的,比如以不透明的图片或者颜色作为背景,那么,你将看不到任何动态墙纸效果,当然,这样的话,静态墙纸你也不会看到了。
<action android:name="android.service.wallpaper.WallpaperService" />
[html] view
plain copy
<action android:name="android.service.wallpaper.WallpaperService" />
不错,系统正式通过APK的这个action把其当做一个动态墙纸加载进LivePicker列表,用户在LivePicker列表里选择自己喜欢的动态墙纸,进而将动态墙纸显示进Launcher的背后。
需要指出的是,Android的动态墙纸虽然似乎是显示在Launcher的背景里,但其实这只是假象,动态墙纸和Launcher是完全不同的两个进程,只不过Launcher和动态墙纸的进程可以通过框架里的WallpaperManager进行进程间通信罢了,用户在Launcher桌面滑动、点击屏幕时有的动态墙纸能产生交互效果,实际上就是这个进程通信完成的。如果你通过代码将Launcher的背景设置为非透明的,比如以不透明的图片或者颜色作为背景,那么,你将看不到任何动态墙纸效果,当然,这样的话,静态墙纸你也不会看到了。
相关文章推荐
- Android RadioButton图片和图片尺寸
- android---朋友圈评论功能自定义对话框
- android---Activity仿Dialog
- Android中EditText的setError文字不显示的问题
- Android之TelephonyManager&GsmCellLocation类的方法详解
- android meta-data
- Android获取剪贴板内容
- Android调用系统分享
- Android Studio下载插件 修改背景图片
- android蓝牙测试
- Android集成Fresco框架导致在64位机器上(三星S6,华为P8等)找不到其他so库
- 保存在线图片到本地时如何能及时在媒体库中看到
- android 控件 下拉刷新 JellyRefreshLayout
- Android Studio常见报错总结
- Android BroadcastReciver(广播)
- 我的Android使用openCV记录(3)
- 我的Android使用openCV记录(2)
- android中如何去掉标题栏
- Android 在Service里面启动Activity
- MPAndroidChart开源图表框架—-柱状图(二)