可爱宝贝下载链接

一、简介:

        正如别人所说的一样:动态壁纸是一个Android应用程序,包括一个服务(WallpaperService)。该服务必须包括一个引擎(WallpaperService.Engine)。该引擎是连接用户、桌面、系统之间的桥梁。它也可以绘制桌面壁纸。动态壁纸是一个apk应用,但是不同的是这个在我们实现的时候可以不用activity

二、权限与声明:

        在AndroidManifest.xml中添加权限android:permission="android.permission.BIND_WALLPAPER",否则该壁纸只能预览,不能被实际应用

        在AndroidManifest.xml中添加声明android:name="android.service.wallpaper.WallpaperService"以便系统识别(后面代码中可见)

三、操作:

  1.创建一个android工程(没有activity和布局文件的空工程)——MyWallPaper

  2.在src下创建包com.mywallpaper.service,并创建一个服务类-MyWallPaperService

  3.在AndroidManifest.xml中配置服务的信息

其中android:name是你的service的包类路径;

android:icon是在动画壁纸列表中显示的图标(相当于应用列表中的图标)

android:label:壁纸的标签,相当于一个应用的名称

android:resource="@xml/mywallpaper"是其信息,接下来实现。

                                                                        

   4.壁纸信息实现:在res目录下创建文件夹xml,添加xml文件mywallpaper.xml如下内容:

其中android:description是描述;后面两行信息可以不用

 

 

   5.MyWallPaperService的实现:

     5.1 继承WallPaperService并实现其方法

 

 

 

 

     5.2 创建内部类MyEngine并继承Engine;

 

     5.3 提供初始化图片的方法

/** * 初始图片 */public void initImg() {backgound = BitmapFactory.decodeResource(this.getResources(),R.drawable.backgound);}

    5.4 提供绘画的方法

/** * 绘画的方法 */private void draw(){SurfaceHolder holder = engine.getSurfaceHolder();Canvas canvas = holder.lockCanvas(null);if (canvas != null) {canvas.drawBitmap(backgound, 0, 0, null);}holder.unlockCanvasAndPost(canvas);}

 

      5.5 engine中创建时初始化图片

private final Paint paint = new Paint(); // 创建画笔@Overridepublic void onCreate(SurfaceHolder surfaceHolder) {super.onCreate(surfaceHolder);paint.setAntiAlias(true);// 打开抗锯齿initImg();// 初始化位图资源}}

 

     5.6 surface被创建时绘图

/** * 该方法是应用程序第一次创建时要调用。可在这个方法里调用父类对应方法。 * 该方法执行完毕后系统会立即调用onSurfaceChanged方法 */@Overridepublic void onSurfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stubsuper.onSurfaceCreated(holder);draw();}

   6.至此即可运行:




 
 

更多相关文章

  1. Android(安卓)Bluetooth蓝牙技术基础讲解
  2. Android开发者,是时候了解LeakCanary了
  3. 自学Android(安卓)----- Activity的生命周期
  4. 2018-04-08 2018年Android(安卓)面试题
  5. Android绘制原理之刷新机制
  6. ios学习笔记之UIViewControl生命周期
  7. Android每天面试一题--Android的Handler机制
  8. Unity 读写文件之PC端&Android端
  9. 详解Android接口Interface的使用和意义

随机推荐

  1. Android(安卓)N 行为变更
  2. 翻译:Tutorial1:透明面板(LinearLayout)定义
  3. Android(安卓)API Guides---Accessibilit
  4. Android(安卓)基于Aidl的跨进程间双向通
  5. Android(安卓)6.0 设备上自定义文本操作
  6. Android:Java常量池+泛型面试题集锦
  7. Android(安卓)Glide数据更新及内存缓存、
  8. 服务器端向Android客户端的推送
  9. Android(安卓)编程技巧之 ----- 自定义 V
  10. Android之微信开放平台实现分享(分享好友