onAnimationEnd () не вызывается столько же раз, сколько вызывается AnimatorSet.start ()? - PullRequest
0 голосов
/ 18 сентября 2018

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

...