Android自定义动态壁纸开发详解

  

看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。

  

<强>一、动态壁纸原理
  

  

如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。

  

动态壁纸的本质其实就是一个服务在维护一个动态壁纸引擎发动机,所以我们看到的动态效果其实是通过这个引擎画出来的。而维护这个引擎的服务,就是WallpaperService。本篇文章并不讨论内部实现原理,只是让大家知道如何去实现动态壁纸,所以就不详细说了。

  

<强>二,实现动态壁纸
  

  

大体上可分为三个步骤:

  
      <李>创建自定义WallpaperService继承WallpaperService李   <李>在清单中注册该服务并添加相关属性李   <李>创建所需要的xml文件
      李   
  

1。创建自定义WallpaperService

        公开课MyLwp延伸WallpaperService {   @Override   公共引擎>   & lt;服务   android: name=" .MyLwp "   android:启用=" true "      android:许可=癮ndroid.permission.BIND_WALLPAPER”比;   & lt; intent-filter>   & lt;行动android: name=" android.service.wallpaper。WallpaperService”/比;   & lt;/intent-filter>   & lt;元数据   android: name=" android.service.wallpaper "   android:资源=癅xml/livewallpapervideo”/比;   & lt;/service>      

一定要添加的几个地方:许可,意图过滤器,元数据。

  

3。创建需要的xml文件

  

这个xml文件就是清单中元数据中资源的需要的文件:

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;壁纸xmlns: android=" http://schemas.android.com/apk/res/android "   android:描述=" @string/app_name”   android: settingsActivity="自闭症"   android:缩略图=癅mipmap/ic_launcher”/祝辞      

需要注意第二个属性:settingsActivity,这个属性可以设置也可以不设置,他是启动一个设置动态壁纸的界面,一般情况下其实用不到这个界面,我们一般会使用PreferenceActivity去实现。下面是添加该属性和不添加该属性的区别:

  

 Android自定义动态壁纸开发详解

  

完成这些之后,就是我们设计动态壁纸的时候了。回到自定义的壁纸类中:

  

我们当时在类中自定义了一个内部类MyEngine继承自引擎。这就个引擎是用来绘制的。关于引擎的几个主要方法如下:

        类MyEngine扩展引擎{//获取SurfaceHolder时调用   @Override   公共SurfaceHolder getSurfaceHolder () {   返回super.getSurfaceHolder ();   }//手势移动时回调   @Override   公共空间>   @Override   公共空间alt=" Android自定义动态壁纸开发详解“>

  

当然可以实现很多不同的效果,这个就根据不同的需求去实现了。
  

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
  

Android自定义动态壁纸开发详解