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#onAnimationStarted
和ItemAnimator#onAnimationFinished
分别由ItemAnimator#dispatchAnimationStarted
和ItemAnimator#dispatchAnimationFinished
。
从ItemAnimator#dispatchAnimationStarted
的文档ItemAnimator#dispatchAnimationStarted
:
当动画开始时由子类调用的方法。
在查看ItemAnimator
的子类SimpleItemAnimator
及其子类DefaultItemAnimator
的源代码之后,我发现ItemAnimator#dispatchAnimationStarted
在任何子类中都没有被调用过。 但是, ItemAnimator#dispatchAnimationFinished
已经从子类中调用。
这就是为什么你没有得到onAnimationStarted
实现的任何回调。
但是,我不确定这是故意留下还是在框架中的错误,我找不到任何资源。