一、综述
帧动画(Frame Animation,又叫Drawable Animation)是最简单的Android动画效果,其模仿的是电影的多重连续帧播放策略,通过视觉残留来让人感知到动画效果。
帧动画将一张张Drawable按顺序排列,并逐张按时播放来实现动画效果。其对应的Android类是AnimationDrawable。
帧动画有两种实现方式:纯代码实现和XML实现,XML实现相对更简单
二、xml用法
2.1 动画定义
将动画XML文件定义在
res/drawable/
目录下,其中的条目是每一帧的顺序和展示时间。XML文件的根元素是<animation-list>节点,其子元素是一个个的<item>节点,每一个item节点定义一个帧,每个帧中包含其需要展示的Drawable以及其展示时间。用法如下:
res/drawable/frame_animation_demo.xml定义
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android :oneshot="false">
<item android:drawable="@color/color_red" android:duration="200"/>
<item android:drawable="@color/color_green" android:duration="200"/>
<item android:drawable="@color/color_blue" android:duration="200"/>
</animation-list >
drawable可以是任何drawable对象,包括:drawable-xxx下面的所有bitmap、values下定义的color等;此处没用普通的位图而是使用颜色,主要是因为写demo不用弄太多切片,实际应用中这里基本上都是位图切片。
oneshot属性true表示动画只执行一次,执行完成后停在最后一帧;false表示动画无限循环
animation-list还有两个自定义属性:
android:visible 参数为布尔值,设置AnimationDrawable的可见性,true可见,false不可见,xml中定义的visible属性无用,因为根本没有解析。
android:variablePadding 表示是否支持可变的Padding。false表示使用所有帧中最大的Padding,true表示使用当前帧的padding。
注意:此处item还可以嵌套子元素,但是其子元素只能被解析出一个Drawab