Android开发LiveWallpaper流程(利用OpenGLES开发)


首先是定义我们自己的Renderer类,FireWallpaperRenderer实现了GLWallpaperService.Renderer接口(GLWallpaperService的代码在《Android利用OpenGLES开发动态壁纸用到的GLWallpaperService类》的那篇文章里

 
  1. import javax.microedition.khronos.egl.EGLConfig;  
  2. import javax.microedition.khronos.opengles.GL10;  
  3.   
  4. public class FireWallpaperRenderer implements GLWallpaperService.Renderer {  
  5.   
  6.     @Override  
  7.     public void onDrawFrame(GL10 gl) {  
  8.         //绘制你的对象   
  9.     }  
  10.   
  11.     @Override  
  12.     public void onSurfaceChanged(GL10 gl, int width, int height) {  
  13.         //屏幕尺寸发生变化时调用   
  14.     }  
  15.   
  16.     @Override  
  17.     public void onSurfaceCreated(GL10 gl, EGLConfig config) {  
  18.         //初始化OpenGLES设置   
  19.     }  
  20.   
  21. }  

然后定义我们的WallpaperService,FireWallpaperService继承自GLWallpaperService:

 
  1. public class FireWallpaperService extends GLWallpaperService {  
  2.     private FireWallpaperRenderer mRenderer;  
  3.   
  4.     public Engine onCreateEngine() {  
  5.         if (mRenderer == null) {  
  6.             mRenderer = new FireWallpaperRenderer();  
  7.         }  
  8.         return new FireWallpaperEngine();  
  9.     }  
  10.   
  11.     class FireWallpaperEngine extends GLWallpaperService.GLEngine {  
  12.   
  13.         public FireWallpaperEngine() {  
  14.             setRenderer(mRenderer);  
  15.             setRenderMode(RENDERMODE_CONTINUOUSLY);  
  16.         }  
  17.   
  18.     }  
  19.   
  20. }  

完成后编辑Manifest.xml文件,如下:

 
  1. <application Android:icon="@drawable/icon" android:label="@string/app_name">  
  2.         <service android:name=".FireWallpaperService" android:label="@string/firewallpaper"  
  3.             android:permission="android.permission.BIND_WALLPAPER">  
  4.             <intent-filter>  
  5.                 <action android:name="android.service.wallpaper.WallpaperService" />  
  6.             </intent-filter>  
  7.             <meta-data android:name="android.service.wallpaper"  
  8.                 android:resource="@xml/wallpaper" />  
  9.         </service>  
  10.   
  11.     </application>  

Manifest.xml文件中,FireWallpaperService使用到的wallpaper文件

(<meta-dataandroid:name="android.service.wallpaper"android:resource="@xml/wallpaper" />)在res/xml目录下定义,内容如下:

 
  1. <span style="color:#000000;"><?xml version="1.0" encoding="utf-8"?>  
  2. <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:description="@string/description" android:thumbnail="@drawable/fire" /></span>  

这样基于OpenGLES的动态壁纸框架就搭建好了,你只需在FireWallpaperRenderer类的对应方法中添加适当的代码就可以实现动态壁纸了。

相关内容