我在自定义ItemAnimator的animateChange()
内使用ValueAnimator,通过设置newHolder
和oldHolder
来更新oldHolder.itemView.layoutParams
和newHolder.itemView.layoutParams
的高度更新的参数。
newHolder
的视图正确动画。 oldHolder
的视图停留在isLayoutRequested() == true
的状态,并且在设置新的布局参数时永远不会重绘。
有谁知道发生了什么事?
ValueAnimator.ofInt(INITIAL_HEIGHT, FINAL_HEIGHT).apply {
duration = ANIMATION_DURATION
addUpdateListener {
val newHeight = animatedValue as Int
val oldLp = oldHolder.itemView.layoutParams
oldLp.height = newHeight
oldHolder.itemView.layoutParams = oldLp
val newLp = newHolder.itemView.layoutParams
newLp.height = newHeight
newHolder.itemView.layoutParams = newLp
}
start()
}
为了清楚起见,我遗漏了一些样板。我扩展了DefaultItemAnimator并根据动画的开始和结束调度更改开始/结束。