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 и не может воспроизвести цикл.
Я не знаю почему @@
Пожалуйста помоги!

0 ответов

Другие вопросы по тегам