public override bool AnimateAppearance(RecyclerView.ViewHolder viewHolder, ItemHolderInfo preLayoutInfo, ItemHolderInfo postLayoutInfo) { EnsureDiffResultIsSet(); var view = viewHolder.ItemView; var set = new AnimatorSet(); var scaleAnimator = ObjectAnimator.OfFloat(view, "scaleY", 1f); var translateAnimator = ObjectAnimator.OfFloat(view, "translationY", 0); view.TranslationY = -view.Height * _addedIndexes.FindIndex(0, x => x == ((IndexedItemHolderInfo)postLayoutInfo).Index); view.ScaleY = 0f; view.PivotY = 0; set.PlayTogether(scaleAnimator, translateAnimator); set.AddListener(new AnimatorListener(onEndAction: _ => DispatchAnimationFinished(viewHolder))); _pendingAnimators.Add(set); return(true); }
public override bool AnimateDisappearance(RecyclerView.ViewHolder viewHolder, ItemHolderInfo preLayoutInfo, ItemHolderInfo postLayoutInfo) { EnsureDiffResultIsSet(); var view = viewHolder.ItemView; var translationY = -view.Height * _removedIndexes.FindIndex(0, x => x == ((IndexedItemHolderInfo)preLayoutInfo).Index); var set = new AnimatorSet(); var scaleAnimator = ObjectAnimator.OfFloat(view, "scaleY", 0f); var translateAnimator = ObjectAnimator.OfFloat(view, "translationY", translationY); view.PivotY = 0; set.PlayTogether(scaleAnimator, translateAnimator); _pendingAnimators.Add(set); return(true); }