У меня есть recyclerview с большим количеством элементов (20+) и анимацией лото в каждом элементе. Анимация лотереи не запускается, пока пользователь не коснется ее, но проблема в том, что при нажатии анимации анимация происходит через каждые 5 элементов.
Например, если вы нажмете на 1-й элемент, то анимируются все элементы 5, 10, 15, 20. Если тапнуть по второму то 6,11,16,21 все оживится.
Вот мой класс держателя представления:
class OutfitViewHolder extends RecyclerView.ViewHolder{
private final LottieAnimationView animationView;
private OutfitViewHolder(View view){
super(view);
animationView = view.findViewById(R.id.wearAgainAnimation);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wearAgainAnimation();
}
});
}
private void wearAgainAnimation() {
final ValueAnimator animator = ValueAnimator.ofFloat(0f,.5f).setDuration(800);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
animationView.setProgress((Float) animator.getAnimatedValue()) ;
}
});
if (animationView.getProgress() == 0f) {
animator.start();
} else {
animationView.setProgress(0f);
}
}
}
Я проверил, чтобы убедиться, что адаптеру передается только позиция постукивающего элемента, поэтому я не уверен, почему другие элементы также анимируются.