1. 帧动画:

帧动画顾名思义,一帧一帧播放的动画就是帧动画。 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧的切换罢了。

2.Android如何实现播放帧动画如下:

(1)首先我在网上下载了一张gif动态图片,如下:

这是一个gif动态图片,其实它是很多静态图片相同区域快速切换,我们怎么样把这个gif动态图片中的静态图片从中抽离出来?

这里我使用了一个小工具gifsplitter(大家可以百度在网上自行下载)

gifsplitter软件截图如下:

(2)然后我们使用上面提到的gifsplitter工具,抽取出上面gif动态图片中的静态图片,运行效果如下:

其中frameslist.gsf是配置文件,大家可以不用理会

(3)上面(1)和(2)只是准备数据源,下面开始是编写代码,实现播放帧动画(一帧一帧播放的动画):

新建一个Android工程,名称为AnimationDemo,如下:

同时在res文件下,新建一个drawable文件夹,把刚才我们抽取的静态图片(frameslist.gsf配置文件不用复制)复制到drawable文件夹中,如下:

这里程序只能识别命名方式为由小写字母、数字和下划线组成的图片,所以我把之前名称改成如上的样子。

(4)布局文件activity_main.xml如下:

/>

/>

(5)上面我们已经引入的图片资源,我们要做的事件就是如何把这些图片关联起来,一帧一帧按照特定的顺序播放形成动画效果,接下来核心关键:

我们在res/drawable文件夹下,定义一个beautiful_img.xml,如下:

animation-list是根节点:

•其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画 ,true表示只播放一遍;

•根标签下,通过item标签对动画中的每一个图片进行声明  ;

•android:duration 表示展示所用的该图片的时间长度 (单位:ms);

注意:这里的item的顺序就是我们动画播放的顺序

(6)主代码MainActivity.java:

packagecom.itheima.frameanim;importandroid.app.Activity;importandroid.graphics.drawable.AnimationDrawable;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.ImageView;public class MainActivity extendsActivity {//动画引用

AnimationDrawable rocketAnimation;public voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ImageView rocketImage=(ImageView) findViewById(R.id.iv);

rocketImage.setBackgroundResource(R.drawable.beautiful_img);

rocketAnimation=(AnimationDrawable) rocketImage.getBackground();

}//public boolean onTouchEvent(MotionEvent event) {//if (event.getAction() == MotionEvent.ACTION_DOWN) {//rocketAnimation.start();//return true;//}//return super.onTouchEvent(event);//}

public voidplay(View view) {

rocketAnimation.start();

}public voidstop(View view) {

rocketAnimation.stop();

}

}

ImageView rocketImage = (ImageView) findViewById(R.id.iv);   //获取布局文件中的ImageView,用来显示帧动画;

rocketImage.setBackgroundResource(R.drawable.beautiful_img);//设置ImageView的背景资源为beautiful_img.xml

rocketAnimation = (AnimationDrawable) rocketImage.getBackground();//获得帧动画的引用,指向我们定义的beautiful_img.xml

rocketAnimation.start();  //利用AnimationDrawable类的start()方法播放指引的beautiful_img.xml帧动画;

rocketAnimation.stop();   //利用AnimationDrawable类的stop()方法停止播放指引的beautiful_img.xml帧动画;

(7)程序运行在真机上的效果如下:

点击"播放动画",就会播放动画,这里不方便显示手机的动态效果;

点击"停止播放",就会停止播放,再次点击"播放动画",从头(img00)开始播放。

android 同根动画_Android(java)学习笔记141:Android下的逐帧动画(Drawable Animation)...相关推荐

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

    文章目录 概念介绍 使用方法 注意事项 各位看官们大家好,上一回中咱们说的例子是"如何修改Spinner的倒三角",这一回中咱们说的例子是" 使用逐帧动画实现倒计时效果& ...

  2. Java学习笔记基础(下)

    基本数据类型对象包装类:是按照面向对象思想将基本数据类型封装成了对象. 好处: 1:可以通过对象中的属性和行为操作基本数据. 2:可以实现基本数据类型和字符串之间的转换. 关键字   对应的类名 by ...

  3. android 张口逐帧动画,Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 实现 首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml 这 ...

  4. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  5. 逐帧动画与夸张表情动画

    夸张表情动画的制作(1)   (转之ET动画学堂) 夸张表情动画在网络上应用非常广泛,最 常见的莫过于qq和msn的自定义表情, 这种表情动画是最初级的逐帧动画,使用常见的flash.easytoon ...

  6. 逐帧动画(Frame Animation)

       逐帧动画也叫Drawable Animation,是最简单最直观的动画类型,它利用人眼的视觉暂留效应(也就是光对视网膜所产生的视觉),在光停止作用后,仍然会保留一段事件的现象.     在And ...

  7. 八年级使用计算机的教案,苏科版信息技术八年级1.2.2《用计算机制作逐帧动画》教案1.doc...

    苏科版信息技术八年级1.2.2<用计算机制作逐帧动画>教案1.doc 文档编号:744523 文档页数:4 上传时间: 2019-09-18 文档级别: 文档类型:doc 文档大小:1.3 ...

  8. 计算机动画制作第一节教案,付雪_ 第四章动画制作_第一节制作逐帧动画——教案设计(7页)-原创力文档...

    信息技术课堂教学设计 教学内容 第四章 第一节 制作"逐帧"动画 学 校 北京市高井中学 授课教师 付 雪 课 型 新授课 课 时 1 日 期 教学 目标 = 1 \* GB1 ⒈ ...

  9. CSS或JS实现逐帧动画方案

    什么是逐帧动画 逐帧动画是一种在连续的关键帧中分解动画动作,即在时间轴的每一帧上绘制不同内容并使之连续播放成动画的一种常见的动画形式.与CSS关键帧动画不同的是,逐帧动画每一帧需要自行定义:关键帧动画 ...

最新文章

  1. Nutch编译及集成eclipse+mysql开发环境的部署总结
  2. Python常见错误及解决方案(持续更新)
  3. NIO与传统IO的区别(形象比喻)
  4. linux ntp同步日志,Linux使用入门教程之Rsyslog日志管理、NTP和Rsync备份同步
  5. 你见过哪些堪称绝妙的数学证明?
  6. MongoDB的常用命令以及可视化工具Compass
  7. ModalPopupExtender使用技巧( operate ModalPopupExtender by JavaScript)
  8. 数据库(员工信息表)
  9. 计算机硬件系统储存包括那些,硬件系统包括什么
  10. java审计之XXE
  11. mpp文件能转换成PDF
  12. 8个程序员专用软件/网站,个个是神器,第一个最惊喜......
  13. NOKOV动作捕捉系统使多场协同无人机自主建造成为可能
  14. xarray+cfgrib读取grib文件——报错总结
  15. 正版win7系统下载重装教程
  16. 初见物理引擎库Cannon.js:使用dat.gui修改物体属性
  17. 身份证照片比对,身份鉴别,人脸实名
  18. Direct3D Devices
  19. 成都市历年职工平均年工资与社保养老保险交费标准
  20. NT99141摄像头调试

热门文章

  1. Conditional, Ternary 运算符的使用
  2. 算法面试之Roberta、Albert
  3. matlab避碰,基于非欧保形变换的船舶避碰模型的建立方法与流程
  4. 关于广告中的定向和人群包
  5. 人群计数 P2PNet 算法使用笔记
  6. 新广告法规定不能使用这些词汇,如果使用禁用词、违禁词、敏感词、极限词及限制词被罚,最高处罚100万
  7. Flask之jinja2模板(三)
  8. CAD Electrical 符号编译器变成了黑盒编译器怎么办
  9. zan-admin响应式简单布局
  10. FullCodePress采访:James Farrell,澳大利亚队