onAnimationEnd() не вызывается столько же раз, сколько вызывается AnimatorSet.start()?
Я использую Animator для воспроизведения анимации в цикле.
AnimatorSet anim = new AnimatorSet();
private int countAnimation;
private void initViewRunAnimation() {
//init view
item = ...;
playAnimation(item);
}
private void playAnimation(View item) {
anim = new AnimatorSet();
anim.play(...);
anim.setTarget(item);
anim.setInterpolator(new LinearInterpolator());
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
countAnimation--;
if (countAnimation <= 0)
addImageAndRunAnimation();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
anim.start();
countAnimation++;
}
Каждый раз playAnimation
называется новым AnimatorSet
создан и номер вызова onAnimationEnd
должно быть таким же, как количество созданных объектов AnimatorSet. В Android 8 это работает хорошо, но в Android 5.0.2, когда номер вызова playAnimation
больше 3, onAnimationEnd
выполняется меньше, иногда 1 раз, иногда 2 или 3 раза... countAnimation
всегда больше 0 и не может воспроизвести цикл.
Я не знаю почему @@
Пожалуйста помоги!