本节我们在上一节的基础上继续完成动态壁纸功能,我们要分析的目标就是《OpenGL ES应用开发实践指南 Android卷》书中第14章实现的最终的结果,代码下载请点击:Opengl ES Source Code,该Git库中的livewallpaper Module就是我们本节要分析的目标,先看下本节最终实现的结果。
最终的效果,就是把我们上一节实现的结果作为壁纸显示了出来,桌面滑动时,壁纸也跟着滑动。如果了解壁纸的同学应该都知道,本节的内容其实和Opengl ES完全没有什么相关的了,就是实现一个壁纸,壁纸实现完全用的是我们上一节已经实现的结果。
本节新增的代码,首先是在Manifest中注册了GLWallpaperService,它必须要实现framework定义的WallpaperService,才能实现自定义壁纸功能,而要实现WallpaperService,必须要重写onCreateEngine方法,并返回一个WallpaperService类的内部类Engine的实例对象,所以对壁纸的控制都是在Engine中完成的。《深入理解ANDROID 卷3》一书的第8章中对android系统的壁纸功能有非常详细的源码分析讲解,大家如果想了解详情的话,强烈推荐看一下该书,下载链接:深入理解ANDROID 卷3.pdf。
GLWallpaperService完整源码如下:
public class GLWallpaperService extends WallpaperService {
@Override
public Engine onCre