1.定义方法:res/drawable 文件夹下
定义方法:在 <animation-list.../> 元素中使用 <item.../> 子元素定义动画的全部帧,并指定各帧的持续时间即可。
语法格式:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"]>
<item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" />
</animation-list>
android:drawable 当前帧引用的drawable资源
android:duration 当前帧显示的时间(毫秒为单位)
android:oneshot 如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播放。
android:visible 规定drawable的初始可见性,默认为flase
2016/10/31 23:35
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
animation-list
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:oneshot
=
"false"
>
<!--每间隔50ms换一张图片--->
<
item
android:drawable
=
"@drawable/rocket3"
android:duration
=
"50"
/>
<
item
android:drawable
=
"@drawable/rocket4"
android:duration
=
"50"
/>
<
item
android:drawable
=
"@drawable/rocket5"
android:duration
=
"50"
/>
<
item
android:drawable
=
"@drawable/rocket6"
android:duration
=
"50"
/>
</
animation-list
>
xml文件
使用方法:
1.在res/drawable 资源文件中定义好xml文件
2.在布局文件中应用该文件(background,src)
3.在java代码中启动动画
ImageView iv = (ImageView) findViewById(R.id.iv);
AnimationDrawable anim = (AnimationDrawable) iv.getBackground();
anim.start();
扩展:获取动画时间 在java代码中,获取动画运行时间:
- 获取所有帧数量
- 循环获取每一帧持续时间,并累加
//
获取动画持续时间
单帧相加
int
numberOfFrames
=
numberAnimation
.getNumberOfFrames();
for
(
int
i
= 0;
i
<
numberOfFrames
;
i
++) {
numberTime
+=
numberAnimation
.getDuration(
i
);
}
java代码直接生成帧动画:
- 创建 AnimationDrawable 对象。
- 调用方法向动画中添加帧:
- addFrame(Drawable frame, int duration) :每调用一次该方法,就向 <animation-list.../> 元素中添加一个 <item.../> 子元素。
- 用 ImageView 把 AnimationDrawable 显示出来——通常把 AnimationDrawable 设成 ImageView 的背景即可。
- AnimationDrawable 代表的动画默认是不播放的,必须在程序中启动动画的播放。
- start() :开始播放动画。
- stop() :停止播放动画。