- 帧动画
通过使用 AnimationDrawable 按顺序显示一系列图片来创建动画。或者在 XML 中定义的按顺序显示一系列图片的动画。
2. 通过XML实现
- 文件位置:res/drawable/filename.xml 该文件名将用作资源 ID。
- 编译后的资源数据类型:指向 AnimationDrawable 的资源指针。
- 资源引用:在 Java 中:R.drawable.filename
- 资源引用:在 XML 中:@[package:]drawable.filename
2.1. 元素:
- animation-list 必需。此元素必须是根元素。包含一个或多个
<item>
元素。
属性android:oneshot 布尔值。如果您想要执行一次动画,则为“true”;如果要循环播放动画,则为“false”。
- item 单帧动画。必须是
<animation-list>
元素的子元素。
属性:android:drawable
可绘制资源。要用于此帧的可绘制对象。
属性:android:duration
整数。显示此帧的持续时间,以毫秒为单位。
2.2. 在布局文件中通过android:src="@drawable/play_list"或者通过android:background="@drawable/play_list",设置给ImageView
2.3. 通过以下方法获取AnimationDrawable,并执行动画。
//xml中设置android:src="@drawable/playing_list"
//final AnimationDrawable anim = (AnimationDrawable) imageView.getDrawable();
//xml中设置android:background="@drawable/playing_list"
final AnimationDrawable anim = (AnimationDrawable) imageView.getBackground();
anim.start();
3. 通过Java代码实现
private void framePlayByJava(ImageView imageView){
final AnimationDrawable anim = new AnimationDrawable();
for (int i = 1; i <= 14; i++) {
//根据文件名字获取对用图片的资源id
int id = getResources().getIdentifier("list_icon_gif_playing" + i, "drawable", requireActivity().getPackageName());
Drawable drawable = getResources().getDrawable(id);
anim.addFrame(drawable, 60);
}
anim.setOneShot(false);
imageView.setImageDrawable(anim);
anim.start();
}