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