أريد أن تشغيل 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()
يتم استدعاؤها مرارا وتكرارا. ولكن لسبب ما توقفت الرسوم المتحركة للتو بعد اللعب لمرة واحدة.