移除 Item RecyclerView 时添加自定义动画

Posted

技术标签:

【中文标题】移除 Item RecyclerView 时添加自定义动画【英文标题】:Adding Custom Animation when Removing Item RecyclerView 【发布时间】:2021-03-31 09:29:27 【问题描述】:

我想显示一个自定义动画以匹配我在 RecyclerView 中的其他动画。我找不到添加自定义动画以进行删除的直接方法。我知道当 RecyclerView 取代 ListView 时,谈话要点之一是能够知道何时添加或删除项目,而不是简单地说数据集已更改并更新所有内容,所以我认为有一种简单的方法可以将动画添加到查看我丢失的删除时间。

当我将动画添加到被移除的视图时,动画将不会播放。这可能是因为 View 被移除并且动画停止了。有没有一种简单的方法可以将动画添加到不会被截断的视图中?我假设我可以使用第二个线程,但我想知道我是否遗漏了什么。

//code for removal
holder.button.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                //animation to be added here on view
                list.remove(holder.getAdapterPosition());
                notifyItemRemoved(position);         
                notifyItemRangeChanged(position,list.size()-position);

            
        );

【问题讨论】:

【参考方案1】:

recyclerView 中的所有添加/更改/删除/移动动画均由ItemAnimator 制作(默认动画师为DefaultItemAnimator)。所以如果你需要自定义删除动画,你应该通过recyclerView.setItemAnimator(animator)方法提供自定义ItemAnimator

我建议从SimpleItemAnimator 扩展并覆盖animateRemove 方法。

【讨论】:

以上是关于移除 Item RecyclerView 时添加自定义动画的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView添加分割线

RecyclerView的ItemAnimator

RecyclerView 移除动画bug

RecyclerView 知识梳理 - ItemDecoration

Android:RecyclerView中添加Item点击事件

RecyclerView 高度不能随着Item数量 自适应高度