在 Android 中应用级联动画 RecyclerView 项目
Apply cascade animation RecyclerView Items in Android
我想做下一个动画:
当我单击我的 RecyclerView 中的某个项目时,之前的项目会以级联动画消失。
例如:我点击我放置在位置 10 的项目,然后从 0 到 9 的项目必须应用级联向左滑动动画消失。
如何才能做到?
此时我试过这样申请:
ViewHolder 方法:
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
swipeAnimation(position);
}
});
lstViewsHolder.add(holder.itemView);
setAnimation(holder.itemView, position);
}
private void swipeAnimation(int position){
int init = 0;
while(init < position){
lstViewsHolder.get(init).startAnimation(AnimationUtils.loadAnimation(context, R.anim.swipe_left));
init++;
}
}
正确的做法是使用自定义 ItemAnimator
。您应该尝试扩展 SimpleItemAnimator
或 DefaultItemAnimator
以应用您的动画。
ItemAnimator
s 响应来自适配器的数据事件,因此您应该在适配器中包含调用 notifyItemRemoved()
或 notifyItemRangeRemoved()
的逻辑,以便触发适当的动画。
我认为您应该遍历您的数组,每次删除该项目然后调用 notifyItemRemoved,您可能希望延迟每个操作以便动画看起来流畅。
mResults.remove(position);
adapter.notifyItemRemoved(position);
我想做下一个动画:
当我单击我的 RecyclerView 中的某个项目时,之前的项目会以级联动画消失。
例如:我点击我放置在位置 10 的项目,然后从 0 到 9 的项目必须应用级联向左滑动动画消失。
如何才能做到?
此时我试过这样申请:
ViewHolder 方法:
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
swipeAnimation(position);
}
});
lstViewsHolder.add(holder.itemView);
setAnimation(holder.itemView, position);
}
private void swipeAnimation(int position){
int init = 0;
while(init < position){
lstViewsHolder.get(init).startAnimation(AnimationUtils.loadAnimation(context, R.anim.swipe_left));
init++;
}
}
正确的做法是使用自定义 ItemAnimator
。您应该尝试扩展 SimpleItemAnimator
或 DefaultItemAnimator
以应用您的动画。
ItemAnimator
s 响应来自适配器的数据事件,因此您应该在适配器中包含调用 notifyItemRemoved()
或 notifyItemRangeRemoved()
的逻辑,以便触发适当的动画。
我认为您应该遍历您的数组,每次删除该项目然后调用 notifyItemRemoved,您可能希望延迟每个操作以便动画看起来流畅。
mResults.remove(position);
adapter.notifyItemRemoved(position);