首先创建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="@color/rate_01"
android:duration="16"/>
<item android:drawable="@color/rate_02"
android:duration="16"/>
<item android:drawable="@color/rate_03"
android:duration="16"/>
</animation-list>
布局设置
<ImageView
android:id="@+id/my_anim"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/my_anima"
/>
代码中控制动画
AnimationDrawable drawable = (AnimationDrawable) binding.myAniView.getDrawable();
drawable.start();
drawable.stop();
开启动画
暂停
监听动画结束,切换到下一个动画。AnimationDrawable本身没有动画结束监听,可以自定义AnimationDrawable
public class AnimationDrawableLife extends AnimationDrawable {
private AnimationEndListener listener;
AnimationDrawableLife(AnimationEndListener listener) {
this.listener = listener;
}
@Override
public boolean selectDrawable(int index) {
if (index != 0 && index == getNumberOfFrames() - 1) {
if (listener != null) listener.onAnimationEnd();
}
return super.selectDrawable(index);
}
interface AnimationEndListener {
void onAnimationEnd();
}
}
使用
AnimationDrawableLife animationDrawableLife = new AnimationDrawableLife(new AnimationDrawableLife.AnimationEndListener() {
@Override
public void onAnimationEnd() {
binding.myAniView.setImageDrawable(animationDrawable);
animationDrawable.start();
}
});
binding.myAniView.setBackground(animationDrawableLife);
animationDrawableLife.start();