关闭

Android 动画系列之逐帧(Frame)动画详解

标签: android动画逐帧Frame
1383人阅读 评论(0) 收藏 举报
分类:

前言

前段时间太忙了,已经好久没发博客了,好多想写的东西都没时间写,想了想,这个星期就抽时间写一个动画合集吧,把Android中用到的动画做一个大合集。

这一篇就先写Android中最简单也最容易理解的动画:逐帧(Frame)动画吧。逐帧动画是通过一张一张的图片,切换形成的动画,就类似与我们看的胶片电影一样,逐帧动画最简单的使用就是在xml文件中定义要播放的图片文件并设置好时长,然后在代码中获取并播放。下面以一个播放语音的动画小例子来演示一下具体使用。

使用

定义XML文件

在res/drawable/目录下新建一个动画文件,根节点选择animation-list。这里可能有人很好奇,为什么动画文件不是在anim目录下而是在drawable目录下呢?其实逐帧动画对应的类是:AnimationDrawable其父类就是一个Drawable对象。

<?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_sound1"
        android:duration="300" />
    <item
        android:drawable="@drawable/ic_sound2"
        android:duration="300" />
    <item
        android:drawable="@drawable/ic_sound3"
        android:duration="300" />

</animation-list>

其中drawable属性就是对应的图片资源,建议将图片放在drawable目录下,以免出现错误。
oneshot :true 播放一次 false 循环播放

代码中启动动画

mSoundView.setImageDrawable(getResources().getDrawable(R.drawable.frame));
mAnim = (AnimationDrawable) mSoundView.getDrawable();
mAnim.start();

我们也可以直接给ImageView设置动画文件为背景,然后直接获取AnimationDrawable再start就可以了。

运行结果:
这里写图片描述

除了用上面的在xml中定义帧动画文件外,我们也可以通过AnimationDrawable对象的addFrame()方法在代码中添加。
另外,AnimationDrawable还有如下方法:

JAVA方法 解释
addFrame(Drawable frame, int duration) 添加一个帧动画
getDuration(int i) 获取角标对应持续时间
getFrame(int index) 获取角标对应帧动画
getNumberOfFrames() 获取帧的动画数(放三张图片返回就是3)
isOneShot() 是否只播放一次
setOneShot(boolean oneShot) 设置是否只播放一次
isRunning() 是否正在运行
2
0
查看评论

Android 用Animation-list实现逐帧动画

第一步:先上图片素材,以下素材放到res/drawable目录下: http://blog.csdn.net/aminfo/article/details/7847761 图片素材: 文件名称: icon1.png icon1.png ...
  • AMinfo
  • AMinfo
  • 2012-08-09 15:33
  • 110996

Android 用Animation-list实现逐帧动画详细步骤

1.在res\drawable目录下创建两个文件,分别为animation1.xml及animation2.xml分别用于顺序和倒序显示动画文件,具体创建步骤: (1) (2) 加上文件名 (3) 发现初始这样: (4)改成 然后可以具体改写了,...
  • LLXLQY
  • LLXLQY
  • 2016-08-22 15:15
  • 3207

android的ImageView动画自动播放

ImageView的动画在部分手机上会自动播放,比较奇怪,就在网上找了找解决办法。转自 animation-list-animationdrawable-autostart 自动播放:<ImageView android:layout_width="wrap_content&qu...
  • aotian16
  • aotian16
  • 2016-07-27 16:34
  • 1420

Android中使用多张图片组成动画 AnimationDrawable

AnimationDrawable 就是在andriod里可以逐帧的播放图片,然后产生一种动态的效果; Drawable Animation 可以让我们按顺序加载一系列的资源来创建一个动画。动画的创建和传统意义上电影胶卷的播放一样,是通过加载不同的图片,然后按顺序进行播放来实现的。在代 码的实...
  • gufeilong
  • gufeilong
  • 2016-04-28 19:40
  • 3248

关于Android中Animation的停止

最近遇到一个需求,通过在GridView上改变焦点,并且GridView上每个item有一个隐藏的层,获取焦点之后,通过AlphaAnimation显示出来。 发现当duration大于500时,快速移动焦点,每个item都会播放一次动画。 需求是焦点移动到别的item,当前...
  • easonx1990
  • easonx1990
  • 2012-11-27 19:35
  • 44294

Android帧动画实现,防OOM,比原生动画集节约超过十倍的资源

2015年项目接到一个需求,实现一个向导动画,这个动画一共六十张图片,当时使用的是全志A33的开发板,通过使用Android的动画集实现,效果特别卡顿,然后想到这种方式来实现,效果很流畅.然后写成开一个开源项目供大家参考通过以下两种方式实现帧动画,使用相同的80张280x280的png图片执行动画,...
  • qq_25804863
  • qq_25804863
  • 2017-03-24 17:54
  • 4622

Android动画总结系列(1)——帧动画

本文总结了Android中最基本的动画帧动画的实现方法与AnimationDrawable类的API与关键源码。
  • u013478336
  • u013478336
  • 2016-08-06 17:27
  • 3521

Android 动画学习(一)之View Animation

转载请注明出处: Android动画初步         动画(Animation)在我们日常的Android开发工作当中使用得较为频繁,尤其对于Android游戏这个动画的集合体,掌握动画开发的重要性毋庸置疑。同样的,在Android应用开发中我...
  • yegongheng
  • yegongheng
  • 2014-08-04 10:22
  • 6840

初学Android,图形图像之在指定点(坐标)播放动画(三十五)

在指定地点播放动画,下面是一个爆炸过程的动画,鼠标点击处播放该动画定义动画资源文件blast.xml <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:o...
  • lee576
  • lee576
  • 2012-08-29 14:02
  • 3014

android-帧动画、布局动画

本文连接上面的博文:android-属性动画、视图动画 主要说明:帧动画和布局动画。 其中布局动画又分为两部分:通过xml文件实现的布局动画和通过代码实现的布局动画。 帧动画 帧动画相当于一个一个图片连续播放,不断的连续,利用人眼暂留效果,感觉图片是动画的。 先展示效果图片: 帧动画是D...
  • u010156024
  • u010156024
  • 2015-10-21 20:46
  • 1061
    个人资料
    • 访问:193309次
    • 积分:2163
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:0篇
    • 译文:0篇
    • 评论:90条
    联系方式
    博客专栏
    文章分类
    最新评论