我使用的是RecyclerView
,使用SortedListAdapterCallback
來自SortedList
的數據。我想要禁用onChange
事件的動畫,但將其保留爲onInserted
/onRemoved
/onMoved
。我試過在RecyclerView
使用的DefaultItemAnimator
上嘗試撥打setSupportsChangeAnimations(false)
,但動畫仍然出現。如果我撥打電話setItemAnimator(null)
所有動畫按預期成功刪除。在ItemAnimator上爲RecyclerView禁用onChange動畫
我試圖尋找的實現,它好像如果supportsChangeAnimations
是true
,該RecyclerView
將保留舊viewHolder並淡入淡出到新viewHolder動畫更改事件。我不想那樣。如果supportsChangeAnimations
是false
,則舊的和新的viewHolders將是相同的對象,並且將會改爲從x到x的動畫(即,沒有實際的移動)。但是這意味着該物品會產生惱人的反彈效果。我也不想要那個,我根本不需要動畫。 :(
從DefaultItemAnimator.java:
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
int fromX, int fromY, int toX, int toY) {
if (oldHolder == newHolder) {
// Don't know how to run change animations when the same view holder is re-used.
// run a move animation to handle position changes.
return animateMove(oldHolder, fromX, fromY, toX, toY);
}
...
有時,當我載入我的列表我取異步一些數據,並更新項目1-3倍,它看起來非常糟糕時,它反彈和閃爍每次。
我如何有效地完全禁用onChange
動畫,而不訴諸寫一個完全自定義ItemAnimator
好吧,它可能會工作, – cjurjiu