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
实现的任何回调。
但是,我不确定这是故意留下还是在框架中的错误,我找不到任何资源。
- 在将Android Studio更新到2.3.1和Gradle之后,应用程序崩溃并出现ClassNotFoundException
- 使用Fuel和Result将字节数组转换为Json
- 'com.android.tools.build:gradle:3.0.0-alpha3'和'com.android.tools.build:gradle:3.0.0-alpha1'有什么区别?
- 如何处理Android的改造反应Kotlin?
- Android 4.4(KitKat)上的Android图库为Intent.ACTION_GET_CONTENT返回不同的URI
- gradle插件3.0后,kotlin单元测试失败
- Android室 – 简单的选择查询 – 无法访问主线程上的数据库
- 用rxJava和Retrofit重复请求登录表单
- 拦截每个视图元素被膨胀?