Android的动态壁纸主要用到三个类:

android.app.WallpaperManager:这个类主要用于获取系统壁纸的信息。再写动态壁纸的时候用不到。

android.service.wallpaper.WallpaperService:这个类作为服务在运行,同时负责产生一个Engine

同时,在此类中有一个必须继承的方法为:nCreateEngineWallpaperServiceonCreateEngine这个方法比较特殊,虚拟机没有在WallpaperService里的onCreate方法里调用,更不用你自己在其它Activity里用startService或者bindService来启动它是在程序运行之后,由你在桌面上点击menu->Wallpaper->LiveWallpapers->确定->你的项目名称。这个时候虚拟机调用就会onCreateEngine方法。

还有就是这个Service是什么时候启动的呢?看Manifest.xml文件就可以看出,在组件<service>里有一个<actionandroid:name="android.service.wallpaper.WallpaperService"/>这表明当你设置动态壁纸时这个Service才启动。

android.service.wallpaper.WallpaperService.Engine:这个类是WallpaperService的内部类,负责动态壁纸的各个方面。

介绍这个类里的几个函数

onOffsetsChanged():
这个一般在几个屏幕滑动的时候调用而且当你拖动A屏幕向B屏幕过度时会随着B屏幕的显示面积的变大或者变小一直调用这个方法

onVisibilityChanged()
这个是屏幕显示或者不显示的时候调用的必须完全覆盖屏幕才会调用

onCommand()
可以给壁纸发送一些命令让其执行

onTouchEvent()
处理壁纸的点击时间的

setTouchEventsEnabled(true)
作用是使壁纸能响应touchevent,默认是false

Engine的生命周期与大多数Android应用程序组件,比如activity类似,都是从onCreate()开始,在销毁时调用onDestory()方法。不同的是WallpaperService会提供一个surface用来绘制壁纸,所以在生命周期中多一个onSurfaceCreatedonSurfaceDestroyed的过程。下面是一个最简生命周期:

这是AndroidManifest.xml文件中的一个配置信息,这个地方很重要。

<application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <service            android:label="@string/app_name"            android:name=".TimeWall"            android:permission="android.permission.BIND_WALLPAPER" >            <intent-filter >                <action android:name="android.service.wallpaper.WallpaperService" />            </intent-filter>            <meta-data                android:name="android.service.wallpaper"                android:resource="@xml/alive_wall" />        </service></application>

<service>定义了一个,将运行在背景上并且对事件有响应的Android服务。android:permission="android.permission.BIND_WALLPAPER"意思是任何程 序调用我们的服务都需要有一个指定的权限。Android的Home程序已经具备了该权限,所以它会工作得很好。

< intent-filter >这个标签告诉Android它是个什么样的服务。

< meta-data>标签让它知道在哪能找到关于wallpaper的额外信息。android:resource被设为"@xml/wallpaper"(名字任意,但得对应上),这个值最好设置在res/xml/wallpaper.xml 文件

现附上源代码,里面有详细解释供大家参考!(下载地址复制到地址栏里有效,单纯的点击不会跳到链接)

csdn零分下载:http://download.csdn.net/detail/zqiang_55/4604044

大家感觉文章不错,就帮忙顶下应用: http://www.talkphone.cn/Down/Soft/Detail/49172_0.html

更多相关文章

  1. Android(安卓)Studio中创建AIDL Service
  2. 教你搞定Android自定义ViewGroup
  3. Android开发底部点击按钮从屏幕底部滑出面板(一)
  4. 第75章、再识Intent-调用发送Email程序(从零开始学Android)
  5. Android(安卓)WebView 与 原生的交互
  6. Android(安卓)硬解码 MediaCodec 遇到的问题
  7. Android利用ViewFlipper实现屏幕切换动画效果(上)
  8. Android(安卓)调用Android功能实现虚拟打电话程序
  9. Android之通过ContentProvider实现两个app(进程间)间通信以及函

随机推荐

  1. 2011年智能手机:Android继续闪耀或暗淡?
  2. android UncaughtExceptionHandler全局异
  3. AVG Mobilation Pro for Android(安卓)手
  4. Android屏幕锁定实例源码详解教程一
  5. Android修改Eclipse 中的Default debug k
  6. Android教父高焕堂谈Android“开源”与“
  7. android中JNI使用探究
  8. 开篇--基于Android的小巫新闻客户端开发
  9. 还原Android(安卓)PDU彩信
  10. 如何检索Android设备的唯一ID