iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android编程之动态壁纸实例分析
  • 346
分享到

Android编程之动态壁纸实例分析

程之动态Android 2022-06-06 09:06:10 346人浏览 安东尼
摘要

本文实例讲述了Android编程之动态壁纸。分享给大家供大家参考,具体如下: 从android 2.1版本起引入了动态壁纸的概念,熟悉android的人一定不会陌生。这里解释一

本文实例讲述了Android编程之动态壁纸。分享给大家供大家参考,具体如下:

从android 2.1版本起引入了动态壁纸的概念,熟悉android的人一定不会陌生。这里解释一个动态壁纸是怎么形成又是怎么工作的。

首先动态桌面的动态体现出这个组件是实时变化的,也就是说有一个后台在不停的刷新这个组件。联想到后台组件首先想到的就是service,从代码角度看,果然如此。每一个动态桌面都继承自WallpaperService,其中必须实现的抽象方法onCreateEngine,返回一个Engine对象,实际上所有的绘图与刷新都是由engine完成,service正是提供engine的部分。

打个比方说,在我们设置一个动态壁纸时有预览,这时启动了一个预览的engine来绘制与刷新,当我们设置了壁纸以后又启动了一个填充整个桌面的engine在实时的绘制与刷新。所以动态壁纸的重点在engine里,这里等下提及。

现在着手创建一个动态壁纸。

第一步创建我们的WallpaperService类,同样在其中创建engine类,engine是WallpaperService的内部类。其中engine中关键的方法有

引用
代码如下:onCreate(SurfaceHolder surfaceHolder)

有了surfaceholder我们可以获得canvas对象,有了canvas我们就可以绘图

引用
代码如下:onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep,float yOffsetStep, int xPixelOffset, int yPixelOffset)

屏幕滑动的时候触发此方法

xOffset可以用来判断屏幕序号 百分比的形式,举例说如果你手机上有5个分屏,第一屏这里是0.000,第二屏是0.2000 第三屏是0.4000以此类推
xOffsetStep从字面意义就能理解是步进 同样和你的分屏数有关 如果你的分屏数为5 则每次步进xOffsetStep都是0.20000
xPixelOffset就是实际上像素的移动距离,也就是说移动了多少像素,奇怪的是这里左右移动像素点的offset都为负数

引用
代码如下:public void onVisibilityChanged(boolean visible)

当动态壁纸的可见性发生变化时触发此方法,举例说在桌面上时,动态壁纸的visibility为true,当你运行某个程序的时候动态壁纸的visibility变为false,这里很好理解

引用
代码如下:public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)

可以监听点击事件,点击时触发此方法,action为 android.wallpaper.tap,x记录了横坐标,y记录了纵坐标,z的作用未知,可能是为3D桌面预留下的? 没有试验过,z一般为0
还有一些重要的生命周期方法,和activity类似,就不多说了。

当你要将一个app定义为动态壁纸时,首先需要在AndroidManifest.xml中进行指定,前面提到过,动态壁纸是从 android 2.1 开始支持,所以需要添加

引用
代码如下:<uses-sdk android:minSdkVersion="7" />

由于还要对系统说明这是一个动态壁纸,我们还要加入
代码如下:<uses-feature android:name="android.softwate.live_wallpaper"/>
除此之外,由于我们运行了service,所以同样需要对service进行配置
引用


<service android:name="LiveWallService" android:label="My_live _wallpaper" 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/livepaper"/> 
</service>

比较重要的部分首先是权限android:permission="android.permission.BIND_WALLPAPER"
其次service需要响应action
代码如下:android:name="android.service.wallpaper.WallpaperService
再就是配置文件了
代码如下:<meta-data android:name="android.service.wallpaper" android:resource="@xml/livepaper"/>

接下来接收配置文件。首先在res文件夹下建立一个xml目录,和写appwidget一样。
在目录下我们创建一个xml文件


<?xml version="1.0" encoding="utf-8"?> 
<wallpaper xmlns:android="Http://schemas.android.com/apk/res/android" 
 android:settingsActivity="LiveWallPreference" 
 android:thumbnail="@drawable/ic_launcher" 
 android:description="@string/wallpaper_description" 
 /> 

wallpaper 是系统要求这么写的,带上命名空间。

引用
代码如下:android:settingsActivity="LiveWallPreference"

指定配置动态壁纸的PreferenceActivity,这个PreferenceActivity同样需要在AndroidManifest.xml中注册,不过和一般的activity一样。当我们点击动态壁纸的设置按钮时,导向这个activity。不可缺少,否则点击设置会报错。

引用


android:thumbnail="@drawable/ic_launcher" 
android:description="@string/wallpaper_description" 

第一个图标对应动态壁纸列表中的图标,第二条description则是图标右边你创建的动态壁纸的名字。

至此动态壁纸的框架就算完成了。接下来只需要在wallpaperservice类中加入刷新机制,加入动态内容,一个动态桌面就完成了。

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:Android自定义动态壁纸开发详解android动态壁纸调用的简单实例Android动态修改应用图标与名称的方法实例Android绘制动态折线图Android底部导航栏的动态替换方案Android实现动态添加标签及其点击事件Android 中使用 dlib+OpenCV 实现动态人脸检测功能Android 6.0动态权限及跳转GPS设置界面的方法Android如何动态调整应用字体大小详解Android自定义动态壁纸开发(时钟)


--结束END--

本文标题: Android编程之动态壁纸实例分析

本文链接: https://www.lsjlt.com/news/26267.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android怎么实现动态壁纸
    这篇文章主要介绍了Android怎么实现动态壁纸的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么实现动态壁纸文章都会有所收获,下面我们一起来看看吧。一、概述:壁纸运行在一个Android服务之中...
    99+
    2023-06-04
  • Java并发编程之线程状态实例分析
    今天小编给大家分享一下Java并发编程之线程状态实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线程状态概述线程由生到...
    99+
    2023-06-30
  • Android编程实现状态保存的方法分析
    本文实例讲述了Android编程实现状态保存的方法。分享给大家供大家参考,具体如下:当我们正在发短信的时候,已经写了几百字了,这时突然来了一个电话,我们接完电话之后,如果发现辛辛苦苦的几百字不见了,那可就火大了,而实际上这些内容都是保存了的...
    99+
    2023-05-30
    android 状态 保存
  • JAVA中动态性实例分析
    这篇文章主要介绍了JAVA中动态性实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JAVA中动态性实例分析文章都会有所收获,下面我们一起来看看吧。//下面我结合实例解释一下Java中动态性实现问题clas...
    99+
    2023-06-03
  • Java之JMM高并发编程实例分析
    这篇文章主要介绍“Java之JMM高并发编程实例分析”,在日常操作中,相信很多人在Java之JMM高并发编程实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java之JMM高并发编程实例分析”的疑惑有所...
    99+
    2023-07-02
  • android性能优化之启动过程的示例分析
    小编给大家分享一下android性能优化之启动过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、应用的启动方式通常来说,启动方式分为两种:冷启动和热...
    99+
    2023-05-30
    android
  • Android动画之小球拟合动画的示例分析
    这篇文章给大家分享的是有关Android动画之小球拟合动画的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Android动画之小球拟合动画实例实现效果:动画组成:通过三阶贝塞尔曲线来拟合圆,拟合系数的由来...
    99+
    2023-05-31
    android
  • K8S之StatefulSet有状态服务实例分析
    这篇文章主要介绍“K8S之StatefulSet有状态服务实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“K8S之StatefulSet有状态服务实例分析”文章能帮助大家解决问题。一、概念1....
    99+
    2023-07-02
  • Java动态代理与静态代理实例分析
    这篇文章主要介绍了Java动态代理与静态代理实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java动态代理与静态代理实例分析文章都会有所收获,下面我们一起来看看吧。一、静态代理静态代理的使用静态代理,代...
    99+
    2023-07-02
  • Java面向对象之多态实例分析
    这篇文章主要介绍“Java面向对象之多态实例分析”,在日常操作中,相信很多人在Java面向对象之多态实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java面向对象之多态实例分析”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • Java之网络编程的示例分析
    小编给大家分享一下Java之网络编程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java基础之网络编程基本概念IP:每个电脑都有一个IP地址,在局域网...
    99+
    2023-06-20
  • java访问者模式的静态动态及伪动态分派实例分析
    今天小编给大家分享一下java访问者模式的静态动态及伪动态分派实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 使用...
    99+
    2023-07-02
  • Linux多线程编程实例分析
    这篇文章主要讲解了“Linux多线程编程实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux多线程编程实例分析”吧!线程  线程是计算机中独立运...
    99+
    2024-04-02
  • JAVA多线程编程实例分析
    今天小编给大家分享一下JAVA多线程编程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.三个售票窗口同时出售20张...
    99+
    2023-06-27
  • Android studio中JNI编程实例并生成so库的示例分析
    这篇文章主要为大家展示了“Android studio中JNI编程实例并生成so库的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android studio中JNI编程实例并生成so库...
    99+
    2023-05-30
    android studio
  • java编程之AC自动机工作原理的示例分析
    这篇文章将为大家详细讲解有关java编程之AC自动机工作原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.应用场景—多模字符串匹配我们现在考虑这样一个问题,在一个文本串text中,我们想找出...
    99+
    2023-05-30
    java
  • java静态和动态绑定的实例对比分析
    这篇文章主要介绍了java静态和动态绑定的实例对比分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java静态和动态绑定的实例对比分析文章都会有所收获,下面我们一起来看看吧。不同绑定的比较静态绑定发生在编译期...
    99+
    2023-06-30
  • python之基本形态学滤波实例分析
    本文小编为大家详细介绍“python之基本形态学滤波实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python之基本形态学滤波实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。引言对图像进行形态学变...
    99+
    2023-07-02
  • Shell编程之if语句的示例分析
    这篇文章给大家分享的是有关Shell编程之if语句的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、if条件语句1、单分支语句结构第一种语法如下:if <条件表达式> &...
    99+
    2023-06-09
  • JavaScript程序设计高级算法之动态规划的示例分析
    这篇文章给大家分享的是有关JavaScript程序设计高级算法之动态规划的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:其实像在我们前端的开发中,用到的高级算法...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作