Lottie Animation 在 recyclerview 中每 5 个元素发生一次
Lottie Animation happens every 5 elements in recyclerview
我有一个包含很多元素(20 多个)的 recyclerview,每个元素中都有一个 lottie 动画。 Lottie 动画不会 运行 直到用户点击它,但问题是当点击动画时,动画每 5 个元素发生一次。
例如,如果您点击第一个元素,那么第 5、10、15、20 个元素都会有动画效果。
如果你点击第二个,那么 6、11、16、21 都会动画。
这是我的 View Holder class:
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);
}
}
}
我已经检查以确保只有点击元素的位置被传递给适配器,所以我不确定为什么其他元素也有动画
我最终更改了 recyclerview 的缓存大小以匹配我的列表大小。我在 class
中初始化我的 recyclerview 时这样做了
recyclerView.setItemViewCacheSize(list.size());
我有一个包含很多元素(20 多个)的 recyclerview,每个元素中都有一个 lottie 动画。 Lottie 动画不会 运行 直到用户点击它,但问题是当点击动画时,动画每 5 个元素发生一次。
例如,如果您点击第一个元素,那么第 5、10、15、20 个元素都会有动画效果。 如果你点击第二个,那么 6、11、16、21 都会动画。
这是我的 View Holder class:
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);
}
}
}
我已经检查以确保只有点击元素的位置被传递给适配器,所以我不确定为什么其他元素也有动画
我最终更改了 recyclerview 的缓存大小以匹配我的列表大小。我在 class
中初始化我的 recyclerview 时这样做了recyclerView.setItemViewCacheSize(list.size());