ItemAnimator animateChange oldHolder不动画

时间:2018-04-02 21:27:18

标签: java android animation android-recyclerview kotlin

我在自定义ItemAnimator的animateChange()内使用ValueAnimator,通过设置newHolderoldHolder来更新oldHolder.itemView.layoutParamsnewHolder.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并根据动画的开始和结束调度更改开始/结束。

0 个答案:

没有答案