文章目录

  • 概念介绍
  • 使用方法
  • 注意事项

各位看官们大家好,上一回中咱们说的例子是"如何修改Spinner的倒三角",这一回中咱们说的例子是" 使用逐帧动画实现倒计时效果"。闲话休提,言归正转,让我们一起Talk Android吧!

概念介绍

我们在前面章回中介绍了各种类型的视图动画,这些动画都可以归类为补间动画,本章回将介绍另外一种视图动画:逐帧动画

逐帧动画类似电影,电影是按照一定的速度依次播放每张胶片中的画面,逐帧动画则是按照一定的速度一帧一帧地播放帧中的内容,进而组成一个完整的动画。我们需要做的是添加帧,以及的控制帧的播放速度。

使用方法

明白逐帧动画的概念后,我们通过文字结合代码的方式来介绍如何使用逐帧动画;

  1. 在drawable目录下创建资源文件fram_anima.xml,该资源文件就是动画文件,文件中使用<animation-list>标签和它的item属性;
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="false"><item android:drawable="@drawable/ic_num6" android:duration="1000"></item><item android:drawable="@drawable/ic_num5" android:duration="1000"></item><item android:drawable="@drawable/ic_num4" android:duration="1000"></item><item android:drawable="@drawable/ic_num3" android:duration="1000"></item><item android:drawable="@drawable/ic_num2" android:duration="1000"></item><item android:drawable="@drawable/ic_num1" android:duration="1000"></item>
</animation-list>
  1. 创建一个ImageView控件,并且把动画文件赋值给控件的src属性(background属性也可以);
<ImageViewandroid:id="@+id/id_iv_frame_anima"android:src="@drawable/frame_anima"android:layout_width="56dp"android:layout_height="56dp">
</ImageView>
  1. 在代码中获取ImageView控件以及控件中的动画资源;
  2. 使用动画资源播放动画;
mImageViewFrameAnima = mBinding.idIvFrameAnima;
AnimationDrawable animationDrawable = (AnimationDrawable) mImageViewFrameAnima.getDrawable();
animationDrawable.start();

我们在动画文件中添加了6个属性,每个属性是一张图片,图片的内容从6到1.运行动画就会出现从6到1的倒计时效果,并且动画反复运行。我们在这里就不演示程序的运行结果了,希望大家自己动手去实践。

注意事项

在使用逐帧动画时还有一些细节需要注意,接下来我们详细说明:

  1. <animation-list>标签中的oneshot用来控制动画的播放次数,如果值为true表示只播放一次动画,如果值为false表示无限次地播放动画,默认值为false;
  2. 属性表示动画中的一帧,它的duration表示该帧的播放时间,单位为毫秒;
  3. 代码中逐帧动画的类型为AnimationDrawable类型,在从图片控件中获取动画文件时需要做类型转换;
  4. 逐帧动画与其它视图动画的类型不同,使用方法也不同;

看官们,关于"使用逐帧动画实现倒计时效果"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

一起Talk Android吧(第四百八十四回:使用逐帧动画实现倒计时效果)相关推荐

  1. 一起Talk Android吧(第一百八十六回:Android中的AsyncTask机制五)

    各位看官们大家好,上一回中咱们说的是Android中AsyncTask机制的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起Talk Android吧! 看官们,我们在前面章回中通过具体的 ...

  2. 一起Talk Android吧(第四百五十九回:SeekBar补充用法二)

    文章目录 修改进度的步进值 自定义SeekBar 围魏救赵 各位看官们大家好,上一回中咱们说的例子是"SeekBar补充用法",这一回中咱们继续说该例子.闲话休提,言归正转,让我们 ...

  3. android 自定义进度条_第一百八十九回:Android中自定义ProgressBar三

    各位看官们大家好,上一回中咱们说的是Android中自定义ProgressBar的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起Talk Android吧! 看官们,我们在上一回是通过自 ...

  4. 第一百八十四节,jQuery-UI,验证注册表单

    jQuery-UI,验证注册表单 html <form id="reg" action="123.html" title="会员注册" ...

  5. 不朽凡人 正文 第四百八十九章 三个条件

    "咔嚓!"劳采早已顾不上规则符,仙元疯狂鼓动,就是精血也开始燃烧.只是没等他挣脱莫无忌这一拳,他的规则符就直接碎裂. "嘭!"一道血雾闪过,劳采堂堂一个金仙修士 ...

  6. 上班的第四百八十六天——帮会模块

    最近学的东西都是比较虚,在实际开发中用到的都比较少,所以为了让试用期能够过得妥妥的,我应该要学习一下业务知识的.一个游戏,最基础的无非也就是那几个模块:背包模块.帮会模块.任务模块.技能模块.场景模块 ...

  7. 我生命中的四百八十五天——写给曾经的恋人

    相遇 "你好呀,每一个可能遇见的你~ 最爱拿一只最普通的的手机追寻日光,留住每一幕最美的日出和日落 喜欢静,宁静方可致远:喜欢在自然和在音乐中追寻自我:喜欢以分享记录世界,一心想做一个灵魂比 ...

  8. 不朽凡人 第四百二十四章 再回半仙域

    莫无忌笑了笑,"两位道友倒是和我一样,我也是得罪了洪斧及,这才来到这里." "那我们联合在一起,我们这边有了六个人,我相信离开死亡矿区也有生存之地了."听到莫无 ...

  9. 一起talk C栗子吧(第一百八十六回:C语言实例--反正弦函数)

    各位看官们,大家好,上一回中咱们说的是打印常用的ASCII码对照表的例子,这一回咱们说的例子是:反正弦函数 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,反正弦函数asin是一种数学函 ...

最新文章

  1. Eclipse: “Update SVN cache” hangs and locks up
  2. TCL 过程proc
  3. Redis 集群规范
  4. STL 二分查找 upper_bound和lower_bound用法
  5. .NET Core容器化开发系列(一)——Docker里面跑个.NET Core
  6. USACO-Section2.1 Ordered Fractions(简单数据处理)
  7. 如何使用groff -me在Linux上格式化学术论文
  8. html快捷保存图片,如何使用360浏览器快速保存图片
  9. 一文搞定移动端适配!
  10. Linux vgchange 命令
  11. Nginx出现403 forbidden (13: Permission denied)报错的四种原因
  12. CSND如何转载别人的文章
  13. Latex 带圈的序号
  14. 判断一个数是否为素数常见的四种方法
  15. html5图片弹性布局,HTML5 使用弹性框布局实现可选择和压缩的网格
  16. 第十六届全国大学生智能车竞赛三个创意组别总决赛比赛成绩
  17. rtx3050参数 rtx3050相当于gtx什么显卡 rtx3050显卡什么水平
  18. 生日快乐祝福。我遇见你 都是人间最好的事
  19. 基于h5的航空订票系统的设计与实现
  20. 你一年就工作一天还想请假......

热门文章

  1. 2.4G无线游戏手柄方案开发
  2. 盗墓诡闻录服务器维护,幽行玄城盗墓诡闻录攻略大全 全关卡通关攻略[多图]
  3. 从码云把新建的库拉到mac上
  4. ByteBuffer.Allocate vs AllocateDirect
  5. 科技青年 | 中科院高君宇:本科双学位,直博中科院,好饭不怕晚,学术成果丰...
  6. 四种数据绩效指标管理(上)
  7. 固态继电器和电磁继电器模块
  8. 《天龙八部》中少林寺无名老僧的真实身份大破解
  9. js onpaste事件,禁止粘贴
  10. input onpaste事件