2016-10-21 63 views
3

我將myRecyclerViewitemAnimator分配如下(在Kotlin中),以便我可以聽動畫的開始和結束事件。RecyclerView項目動畫,onAnimationFinished調用,但不是onAnimationStarted。爲什麼?

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。我錯過了什麼嗎?

回答

1

ItemAnimator#onAnimationStartedItemAnimator#onAnimationFinished分別由ItemAnimator#dispatchAnimationStartedItemAnimator#dispatchAnimationFinished調用。

ItemAnimator#dispatchAnimationStarted的DOC:

方法由子類時,一個動畫開始被調用。

看着ItemAnimator的子類SimpleItemAnimator和它的子類DefaultItemAnimator的源代碼後,我發現ItemAnimator#dispatchAnimationStarted尚未在任何地方任何子類的調用。但是,ItemAnimator#dispatchAnimationFinished已從子類中調用。

這就是爲什麼你沒有得到任何回調你的onAnimationStarted實施。

但是,我不確定這是故意留下的還是框架中的錯誤,我找不到任何有關該資源的資源。

相關問題