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

一、动态壁纸原理

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

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

二、实现动态壁纸

大体上可分为三个步骤:

创建自定义WallpaperService继承WallpaperService

在Manifest中注册该Service并添加相关属性

创建所需要的xml文件

1.创建自定义WallpaperService

public class MyLwp extends WallpaperService {

@Override

public Engine onCreateEngine() {

return new MyEngine();

}

class MyEngine extends Engine{

@Override

public SurfaceHolder getSurfaceHolder() {

return super.getSurfaceHolder();

}

@Override

public void onCreate(SurfaceHolder surfaceHolder) {

super.onCreate(surfaceHolder);

}

@Override

public void onDestroy() {

super.onDestroy();

}

@Override

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {

super.onSurfaceChanged(holder, format, width, height);

}

@Override

public void onSurfaceCreated(SurfaceHolder holder) {

super.onSurfaceCreated(holder);

}

@Override

public void onSurfaceDestroyed(SurfaceHolder holder) {

super.onSurfaceDestroyed(holder);

}

}

}

Android自定义动态壁纸,Android自定义动态壁纸开发详解相关推荐

  1. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  2. Android openGl开发详解(二)

    https://zhuanlan.zhihu.com/p/35192609 Android openGl开发详解(二)--通过SurfaceView,TextureView,GlSurfaceView ...

  3. Android openGl开发详解(二)——通过SurfaceView,TextureView,GlSurfaceView显示相机预览(附Demo)

    最近公司在做自定义相机这一块,之前使用的是第三方,后来需求变更,第三方不支持添加动态贴纸,所以只能自己扩展.当然网上有很多例子,但是关于添加动态贴纸的例子几乎找不到,反正我是没找到(欲哭无泪).当然, ...

  4. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  5. JMessage Android 端开发详解

    JMessage Android 端开发详解 目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 ...

  6. c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解

    静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...

  7. Android 系统(252)---Android:BLE智能硬件开发详解

    Android:BLE智能硬件开发详解 目录 前言 BLE是个什么鬼 BLE中的角色分工 主要的关键词和概念  GATT(Generic Attribute Profile ) Characteris ...

  8. Android Material Design 系列之 BottomNavigationView + ViewPager + Fragment + BadgeView 开发详解

    前言 BottomNavigationView 是 Material Design 提供的一个标准底部导航栏的实现,可以轻松的实现导航栏菜单之间的切换与浏览.底部导航使用户更方便的查看和切换最高层级的 ...

  9. android拍照保存照片方向,Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能...

    android.jpg 前言 在前几篇文章中介绍了如何调用系统相机拍照和使用Camera1的实现自定义相机拍照.人脸检测等功能 文章传送门: 接下来的几篇文章中,我将给大家介绍如何使用Camera2实 ...

  10. android开发照相机啊,Android照相机开发详解(一)

    Android相机开发详解(一) Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的 ...

最新文章

  1. Cordova入门系列(三)Cordova插件调用
  2. 自动化办公 Python 操控 Word
  3. 关于页面无法实现高度100%的原因及实现方法。
  4. TypeError系列之:TypeError: 'tuple' object does not support item assignment
  5. mysql5.5更改端口后初始化_centos7 修改mysql5.7默认端口后启动异常
  6. .NET Core dotnet 命令大全
  7. ghelper怎么在手机上用_当长时间不用手机玩《崩坏3》、《战双》
  8. mysql数据库约束详解_基于MySQL数据库的数据约束实例及五种完整性约束介绍
  9. 解决:WebDriverException: 'chromedriver' executable needs to be in PATH
  10. Stetho简化Android调试(二)
  11. Windows 自带硬盘修复命令 CHKDSK
  12. HTML给表格写个标题居中,如何将表格中的各个标题居中?
  13. 2015蓝桥真题(A组省赛)
  14. 与体育行业有关的e–r图_体育产业与相关产业的产业关联度研究
  15. jqGrid参数列表
  16. 2022年制冷与空调设备运行操作最新解析及制冷与空调设备运行操作作业考试题库
  17. 《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试
  18. 键盘KeyCode值列表~~常用
  19. ai作文批改_AI智能作文批改与人工批改对比分析
  20. MCGS的Modbus RTU设备配置 采集优化一定要不优化,否则没有通信数据

热门文章

  1. java序列化异常_Java|序列化异常StreamCorruptedException的解决方法
  2. opencv和python的区别_所有这些OpenCV Python接口之间有何不同?
  3. 什么是 APT 攻击
  4. 前端性能优化实践 | 百度APP个人主页优化
  5. 易优cms后台RCE以及任意文件上传漏洞
  6. python配置日志的几种方式
  7. django 在保存数据前进行数据校验
  8. Codeforces Round #383 _python作死系列
  9. Redis学习笔记五:独立功能之事务
  10. redhat linux 5.6安装图解