@Nullable public ItemHolderInfo recordPostLayoutInformation(@NonNull ViewHolder viewHolder) { final FeatureAnimatorListener listener = getFeatureAnimatorListener(viewHolder); return listener != null ? listener.getPostLayoutInformation(viewHolder) : null; }
@Nullable public ItemHolderInfo recordPreLayoutInformation(@NonNull ViewHolder viewHolder) { final FeatureAnimatorListener listener = getFeatureAnimatorListener(viewHolder); return listener != null ? listener.getPreLayoutInformation(viewHolder) : null; }
public boolean animateChange(@NonNull ItemAnimator itemAnimator, @NonNull ViewHolder oldHolder, @NonNull ViewHolder newHolder, @NonNull ItemHolderInfo preInfo, @NonNull ItemHolderInfo postInfo) { final FeatureAnimatorListener listener = viewTypeFeatureAnimatorMap.get(oldHolder.getItemViewType()); if (listener != null) { final Animator animator = listener.setupChangeAnimation(itemAnimator, oldHolder, newHolder, preInfo, postInfo); if (animator != null) { animator.addListener(new CustomAnimationEndListener(itemAnimator, newHolder)); viewHolderAnimatorMap.put(newHolder, animator); return true; } } return false; }