看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。
<强>一、动态壁纸原理
强>
如果你了解使用过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去实现。下面是添加该属性和不添加该属性的区别:
完成这些之后,就是我们设计动态壁纸的时候了。回到自定义的壁纸类中:
我们当时在类中自定义了一个内部类MyEngine继承自引擎。这就个引擎是用来绘制的。关于引擎的几个主要方法如下:
类MyEngine扩展引擎{//获取SurfaceHolder时调用 @Override 公共SurfaceHolder getSurfaceHolder () { 返回super.getSurfaceHolder (); }//手势移动时回调 @Override 公共空间> @Override 公共空间alt=" Android自定义动态壁纸开发详解“>当然可以实现很多不同的效果,这个就根据不同的需求去实现了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android自定义动态壁纸开发详解