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

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

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

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

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

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

介绍这个类里的几个函数

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

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

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

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

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

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

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

<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><serviceandroid: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-dataandroid: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

转载于:https://www.cnblogs.com/wuyida/archive/2011/12/15/6300653.html

Android_动态壁纸介绍相关推荐

  1. iphone主屏幕动态壁纸_iPhoneXLivePhoto动态壁纸

    iPhoneX最新的LivePhoto动态壁纸大全为大家带来,这款壁纸用扭曲舞动的色彩调和出非常好看的壁纸,可以在iPhoneX上把LivePhoto动态壁纸当做桌面或者锁屏,欢迎来本站下载使用! L ...

  2. win10动态壁纸怎么设置_想把我的女朋友设置为动态壁纸:看过来,教你啊

    动态壁纸,最近已经越来越受用户的欢迎.炫酷的桌面效果非常动人,让人蠢蠢欲动,但有非常多的网友都不会设置win10动态桌面.所以今天小编就把设置win10动态桌面的方法告诉大家,下面就是设置win10动 ...

  3. 动态壁纸安卓_安卓 高清 动态 壁纸

    Hi,各位大佬好!我是此木: 昨天刚过完"2020520",今天女神要我给她换个好看的.高清的.动态的.安卓的手机壁纸,我勒个去,要求还真不高,于是乎此木埋头半小时,终于找到一款符 ...

  4. iphone主屏幕动态壁纸_iPhone8怎么设置动态壁纸?iPhone8动态壁纸设置教程

    iPhone8怎么设置动态壁纸?朋友们平时想把一些拍摄的动态图片设置iPhone8壁纸,该怎么设置呢?估计有 不少朋友还不知道如何设置, 在这里我就来为大家介绍一下iPhone8设置动态壁纸的教程,一 ...

  5. android 动态壁纸

    引用:http://www.ophonesdn.com/article/show/278 http://developer.android.com/resources/samples/CubeLive ...

  6. 壁纸背景墙/头像/动态壁纸小程序源码-支持用户投稿-带部分采集功能+搭建教程

    介绍: 今天自己搭建测试了一下这款背景墙/头像/动态壁纸小程序源码,源码使用dcloud云开发 (云开发优势:无需服务器域名直接搭建部署即可,成本低方便维护.)支持微信QQ双端小程序也就是说可以打包成 ...

  7. iphone主屏幕动态壁纸_灵动优美的iphone高清动态锁屏壁纸

    看惯了千篇一律的静态壁纸,厌烦了自带的动态壁纸,不妨来试试小编给大家精心挑选的几款Live Photos,除了惊艳还是惊艳^_^ 先来几个样张: 大家不要直接将这两张图用作设置为锁屏壁纸,这样就没有原 ...

  8. android 前后同时预览_用上这些官方动态壁纸,让你的 Android 主屏简洁又优雅

    近年来,越来越多的 Android 厂商都选择通过定制动态壁纸的方式,来为自家手机打造独特的使用体验.一些 OEM 厂商甚至能跳出常规框架.赋予其与众不同的视觉效果和交互方式,只是一张动态壁纸,就足以 ...

  9. iphone主屏幕动态壁纸_iPhone不需长按自动触发动态壁纸教程

    背景: 想必近期广大爱刷抖音的朋zha友nan们肯定被上面的动态锁屏壁纸刷屏了吧. 本屌丝也跟风设置了实况壁纸. 结果才发现! 一定要长按屏幕才能动起来? WTF !! 这还有什么乐趣!怎么能显示我的 ...

最新文章

  1. Redis详解(八)------ 主从复制
  2. php怎么写获取手机剪切板到搜索栏,如何根据指定的剪切板获取html?
  3. Guava之RateLimiter的设计
  4. 弥补关系型数据库的不足,引入分布式存储
  5. T-SQL笔记6:GO
  6. Angular应用里setTimeout被如何被monkey patched的
  7. 工作176:表单重置
  8. c语言第六次上机作业,C语言第五次上机作业参考答案
  9. 疑似Redmi K40S工信部入网:主打双十一 最高支持120W快充
  10. matlab误比特率,[转载]使用Matlab进行误比特率仿真
  11. 【Linux】Ubuntu 代理配置
  12. 牛客 2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 签到题13题
  13. java鼠标中键_java-selenium鼠标键盘操作Actions类和Robot
  14. HDU1325 Is It A Tree?
  15. 树链剖分解析---WYD
  16. 微信客户端电话人工服务器,微信客服电话多少 微信客服电话人工服务怎么接通...
  17. 【磨刀不误砍柴工】由传递函数绘出频率响应图
  18. 任何进行推理的系统都必须具有一些基本的智能
  19. PADS9.5—layout中导入.asc文件时遇到的问题
  20. Elasticsearch 使用初级入门 【入门篇】

热门文章

  1. 也分享自己做的JS扫雷小游戏
  2. Ubuntu与Mint哪个好?Linux运维发行版本推荐!
  3. awk小技巧之执行shell命令
  4. JavaWeb课程复习资料(九)——删除功能
  5. Java扑克牌(斗地主,手中牌的排序)【Comparator】
  6. SQL基础【九、Update】
  7. MySQL 5.7临时表空间怎么玩才能不掉坑里
  8. Mysql错误1366 - Incorrect integer value解决方法
  9. Spring Boot(十四)RabbitMQ延迟队列
  10. WSL安装xfce4