Зацикливание анимированного ScrollView в Android делает паузы между повторами
Я внедряю игровой автомат в Android. Катушки представляют собой ScrollViews с LinearLayout в качестве дочерних элементов, а отдельные фрагменты в виде ImageViews, вертикально ориентированные внутри LinearLayout. Я использую ObjectAnimator для прокрутки до конца ScrollView, используя ValueAnimator.RESTART и ValueAnimator.INFINITE. Прокрутка барабана приятна и плавна, однако, когда приходит время повторить, она останавливается на секунду, что разрушает эффект. Вот код, который я использую:
public void spinReel(SlotReel reel) {
final int reelSize = this.context.getPixelsInDPs(64);
final SlotMachineView me = this;
final SlotReel myReel = reel;
ImageView[] tiles = reel.getTiles();
int delta = tiles.length - reel.currentTileNumber();
ObjectAnimator animator = ObjectAnimator.ofInt(reel, "scrollY", tiles.length * reelSize );
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(delta * 75);
animator.setStartDelay(0);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
myReel.scrollTo(0, reelSize * 3);
}
});
animator.start();
}
Обратите внимание, что рывки происходят независимо от того, поместил ли я scrollTo в обратный вызов Repeat.
Пример видео здесь:
1 ответ
Тебе стоит попробовать:
setRepeatMode(ValueAnimator.INFINITE);
смотрите здесь Android ValueAnimator делает паузу во время повтора