我想在无限循环中运行AnimatedVectorDrawable
动画。
final AnimatedVectorDrawableCompat avd = AnimatedVectorDrawableCompat.create(this, R.drawable.avd_anim_happy);
mImageView.setImageDrawable(avd);
// animation on infinite loop
avd.registerAnimationCallback(new Animatable2Compat.AnimationCallback() {
@Override
public void onAnimationStart(Drawable drawable) {
super.onAnimationStart(drawable);
Log.e(TAG, "onAnimationStart() called");
}
@Override
public void onAnimationEnd(Drawable drawable) {
Log.e(TAG, "onAnimationEnd() called");
avd.start();
}
});
avd.start();
}
当我使用牛轧糖设备进行测试时,此方法工作正常。但是,当我尝试在 KitKat 设备上运行此程序时,将调用回调,但不会再次启动动画。没有 “已调用onAnimationStart()”日志消息。但是在执行以下操作之后。
@Override
public void onAnimationEnd(Drawable drawable) {
Log.e(TAG, "onAnimationEnd() called");
if (avd.isRunning()) {
Log.e(TAG, "avd running!!");
avd.stop();
}
avd.start();
}
onAnimationEnd()
和onAnimationStart()
一次又一次被调用。但是出于某种原因,动画只播放了一次就停止了。
答案 0 :(得分:0)
我在旧平台上遇到了同样的问题,事实证明,我通过在结束事件之后发布开始来解决它。
imageView.post(new Runnable() {
@Override
public void run() {
avd.start();
}
});