RecyclerView项目动画,onAnimationFinished调用,但不是onAnimationStarted。 为什么?

我将myRecyclerView分配给myRecyclerView ,如下(在Kotlin中),以便我可以听动画的开始和结束事件。

  myRecyclerView.itemAnimator = object : DefaultItemAnimator() { override fun onAnimationFinished(viewHolder: RecyclerView.ViewHolder?) { Log.d("Testing", "I am finished") } override fun onAnimationStarted(viewHolder: RecyclerView.ViewHolder?) { Log.d("Testing", "I am started") } } 

我使用DiffUtil来发送更改。 动画工作正常。 但是只有onAnimationFinished回调被调用,而不是onAnimationStarted 。 我错过了什么?

ItemAnimator#onAnimationStartedItemAnimator#onAnimationFinished分别由ItemAnimator#dispatchAnimationStartedItemAnimator#dispatchAnimationFinished

ItemAnimator#dispatchAnimationStarted的文档ItemAnimator#dispatchAnimationStarted

当动画开始时由子类调用的方法。

在查看ItemAnimator的子类SimpleItemAnimator及其子类DefaultItemAnimator的源代码之后,我发现ItemAnimator#dispatchAnimationStarted在任何子类中都没有被调用过。 但是, ItemAnimator#dispatchAnimationFinished已经从子类中调用。

这就是为什么你没有得到onAnimationStarted实现的任何回调。

但是,我不确定这是故意留下还是在框架中的错误,我找不到任何资源。