我将myRecyclerView
和itemAnimator
分配如下(在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
的子类SimpleItemAnimator
及其子类DefaultItemAnimator
的源代码后,我发现在任何子类中的任何地方都未调用ItemAnimator#dispatchAnimationStarted
。但是,已从子类中调用ItemAnimator#dispatchAnimationFinished
。
这就是为什么您没有为onAnimationStarted
实现获取任何回调的原因。
但是,我不确定这是故意遗留的还是框架中的错误,我找不到有关此的任何资源。