Most visited

Recently visited

DefaultItemAnimator

public class DefaultItemAnimator
extends SimpleItemAnimator

java.lang.Object
   ↳ android.support.v7.widget.RecyclerView.ItemAnimator
     ↳ android.support.v7.widget.SimpleItemAnimator
       ↳ android.support.v7.widget.DefaultItemAnimator


RecyclerView.ItemAnimator这个实现为移除,添加和移动发生在RecyclerView中的项目的事件提供了基本的动画。 RecyclerView默认使用DefaultItemAnimator。

也可以看看:

Summary

Inherited constants

From class android.support.v7.widget.RecyclerView.ItemAnimator

Public constructors

DefaultItemAnimator()

Public methods

boolean animateAdd(RecyclerView.ViewHolder holder)

在将项目添加到RecyclerView时调用。

boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromX, int fromY, int toX, int toY)

在RecyclerView中更改项目时调用,如调用 notifyItemChanged(int)notifyItemRangeChanged(int, int)

boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY)

在RecyclerView中移动项目时调用。

boolean animateRemove(RecyclerView.ViewHolder holder)

从RecyclerView中删除一个项目时调用。

boolean canReuseUpdatedViewHolder(RecyclerView.ViewHolder viewHolder, List<Object> payloads)

当一个项目被改变时,ItemAnimator可以决定是否要为动画重用相同的ViewHolder,或者RecyclerView应该创建该项目的副本,并且ItemAnimator将使用两者来运行动画(例如

如果有效载荷列表不是空的,则DefaultItemAnimator返回 true

void endAnimation(RecyclerView.ViewHolder item)

方法在视图上的动画应该立即结束时调用。

void endAnimations()

当所有项目动画应该立即结束时调用该方法。

boolean isRunning()

返回当前是否有任何项目动画正在运行的方法。

void runPendingAnimations()

当有待处理的动画等待启动时调用。

Inherited methods

From class android.support.v7.widget.SimpleItemAnimator
From class android.support.v7.widget.RecyclerView.ItemAnimator
From class java.lang.Object

Public constructors

DefaultItemAnimator

DefaultItemAnimator ()

Public methods

animateAdd

boolean animateAdd (RecyclerView.ViewHolder holder)

在将项目添加到RecyclerView时调用。 实现者可以选择是否以及如何动画变化,但必须在完成后始终调用dispatchAddFinished(ViewHolder) ,或者立即(如果没有动画发生)或动画实际完成后调用。 返回值表示动画是否已经成立,以及是否ItemAnimator的runPendingAnimations()方法应该在下次有机会被调用。 这种机制允许ItemAnimator个别动画作为单独的电话设置为animateAdd()animateMove()animateRemove() ,并animateChange(ViewHolder, ViewHolder, int, int, int, int)进来一个接一个,然后到后来的呼叫启动动画一起runPendingAnimations()

这个方法也可能被调用来显示已经在RecyclerView中的项目,但是系统没有足够的信息来将它们动画到视图中。 在这种情况下,添加项目的默认动画也会在这些项目上运行。

Parameters
holder RecyclerView.ViewHolder: The item that is being added.
Returns
boolean true if a later call to runPendingAnimations() is requested, false otherwise.

animateChange

boolean animateChange (RecyclerView.ViewHolder oldHolder, 
                RecyclerView.ViewHolder newHolder, 
                int fromX, 
                int fromY, 
                int toX, 
                int toY)

在RecyclerView中更改项目时调用,如调用 notifyItemChanged(int)notifyItemRangeChanged(int, int)

实施者可以选择是否和如何制作动画的变化,但必须随时拨打dispatchChangeFinished(ViewHolder, boolean)每个非空不同ViewHolder,可以立即(如果不会出现动画)或动画后实际完成。 如果oldHolderoldHolder是相同的newHolder ,则必须一次且仅调用一次dispatchChangeFinished(ViewHolder, boolean) 在这种情况下,第二个参数dispatchChangeFinished被忽略。

返回值指示是否已经设置了动画,以及是否应该在下一次调用runPendingAnimations()方法runPendingAnimations()方法。 这种机制允许ItemAnimator个别动画作为单独的电话设置为animateAdd()animateMove()animateRemove() ,并animateChange(ViewHolder, ViewHolder, int, int, int, int)进来一个接一个,然后到后来的呼叫启动动画一起runPendingAnimations()

Parameters
oldHolder RecyclerView.ViewHolder: The original item that changed.
newHolder RecyclerView.ViewHolder: The new item that was created with the changed content. Might be null
fromX int: Left of the old view holder
fromY int: Top of the old view holder
toX int: Left of the new view holder
toY int: Top of the new view holder
Returns
boolean true if a later call to runPendingAnimations() is requested, false otherwise.

animateMove

boolean animateMove (RecyclerView.ViewHolder holder, 
                int fromX, 
                int fromY, 
                int toX, 
                int toY)

在RecyclerView中移动项目时调用。 实现者可以选择是否以及如何动画变化,但必须在完成后始终调用dispatchMoveFinished(ViewHolder) ,或者立即(如果没有动画发生)或动画实际完成后调用。 返回值表示动画是否已经成立,以及是否ItemAnimator的runPendingAnimations()方法应该在下次有机会被调用。 这种机制允许ItemAnimator个别动画作为单独的电话设置为animateAdd()animateMove()animateRemove() ,并animateChange(ViewHolder, ViewHolder, int, int, int, int)进来一个接一个,然后到后来的呼叫启动动画一起runPendingAnimations()

Parameters
holder RecyclerView.ViewHolder: The item that is being moved.
fromX int
fromY int
toX int
toY int
Returns
boolean true if a later call to runPendingAnimations() is requested, false otherwise.

animateRemove

boolean animateRemove (RecyclerView.ViewHolder holder)

从RecyclerView中删除一个项目时调用。 执行者可以选择是否以及如何动画变化,但是在完成时必须始终调用dispatchRemoveFinished(ViewHolder) ,或者立即(如果没有动画发生)或动画实际完成后调用dispatchRemoveFinished(ViewHolder) 返回值指示是否已经设置了动画以及是否应该在下一次调用runPendingAnimations()方法runPendingAnimations()方法。 这种机制允许ItemAnimator个别动画作为单独的电话设置为animateAdd()animateMove()animateRemove() ,并animateChange(ViewHolder, ViewHolder, int, int, int, int)进来一个接一个,然后到后来的呼叫启动动画一起runPendingAnimations()

这种方法也可以用于RecyclerView中继续存在但消失的项目,但系统没有足够的信息将它们设置为不可见。 在这种情况下,移除项目的默认动画也会在这些项目上运行。

Parameters
holder RecyclerView.ViewHolder: The item that is being removed.
Returns
boolean true if a later call to runPendingAnimations() is requested, false otherwise.

canReuseUpdatedViewHolder

boolean canReuseUpdatedViewHolder (RecyclerView.ViewHolder viewHolder, 
                List<Object> payloads)

当一个项目被更改时,ItemAnimator可以决定是否要为动画重用相同的ViewHolder,或者RecyclerView应该创建该项目的副本,并且ItemAnimator将使用两者来运行动画(例如交叉渐变)。

请注意,只有在RecyclerView.ViewHolder仍具有相同类型( getItemViewType(int) )时才会调用此方法。 否则,ItemAnimator将始终通过animateChange(ViewHolder, ViewHolder, ItemHolderInfo, ItemHolderInfo)方法接收两个RecyclerView.ViewHolder

如果有效载荷列表不是空的,则DefaultItemAnimator返回true 在这种情况下:

Parameters
viewHolder RecyclerView.ViewHolder: The ViewHolder which represents the changed item's old content.
payloads List: A non-null list of merged payloads that were sent with change notifications. Can be empty if the adapter is invalidated via notifyDataSetChanged(). The same list of payloads will be passed into onBindViewHolder(ViewHolder, int, List) method if this method returns true.
Returns
boolean True if RecyclerView should just rebind to the same ViewHolder or false if RecyclerView should create a new ViewHolder and pass this ViewHolder to the ItemAnimator to animate. Default implementation calls canReuseUpdatedViewHolder(ViewHolder).

endAnimation

void endAnimation (RecyclerView.ViewHolder item)

方法在视图上的动画应该立即结束时调用。 当发生其他事件(如滚动)时,可能会发生这种情况,以便将动画视图快速放入其正确的终点位置。 实现应确保该项目上运行的任何动画都被取消,并且受影响的属性将设置为其最终值。 另外,应该为每个完成的动画调用dispatchAnimationFinished(ViewHolder) ,因为在调用此方法时动画是有效完成的。

Parameters
item RecyclerView.ViewHolder: The item for which an animation should be stopped.

endAnimations

void endAnimations ()

当所有项目动画应该立即结束时调用该方法。 当发生其他事件(如滚动)时,可能会发生这种情况,以便将动画视图快速放入其正确的终点位置。 实现应确保任何项目上运行的任何动画都被取消,并且受影响的属性将设置为其最终值。 另外,应该为每个完成的动画调用dispatchAnimationFinished(ViewHolder) ,因为在调用此方法时动画是有效完成的。

isRunning

boolean isRunning ()

返回当前是否有任何项目动画正在运行的方法。 此方法可用于确定是否延迟其他操作直到动画结束。

Returns
boolean true if there are any item animations currently running, false otherwise.

runPendingAnimations

void runPendingAnimations ()

当有待处理的动画等待启动时调用。 这种状态是由返回值从管辖animateAppearance()animateChange() animatePersistence()animateDisappearance() ,该通知RecyclerView的ItemAnimator希望稍后调用来启动相关的动画。 runPendingAnimations()将被安排在下一帧上运行。

Hooray!