SortedListAdapterCallback
提供数据的RecyclerView
。 我想禁用onChange
事件的动画效果,但保留onInserted
/onRemoved
/onMoved
的动画效果。我试过在 RecyclerView
中使用的 DefaultItemAnimator
上调用 setSupportsChangeAnimations(false)
方法,但仍然有动画效果。如果我调用 setItemAnimator(null)
,所有的动画都会被移除。
我尝试查看了实现,并发现如果 supportsChangeAnimations
为 true
,则RecyclerView
将通过保留旧的 viewHolder 并将其与新的 viewHolder 交叉淡入淡出来动画化更改事件。我不想要那个。 如果 supportsChangeAnimations
为 false
,则旧和新的 viewHolders 将是同一个对象,并且将从 x 移动到 x(即没有实际移动)进行 onMoved
动画。不过这意味着该项将具有令人讨厌的弹跳效果。我也不要那个,我根本不想要任何动画效果。:(
来自 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?