@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, -holder.itemView.getHeight() * .25f); ViewCompat.setAlpha(holder.itemView, 0); }
@Override public void onAnimationCancel(View view) { if (deltaX != 0) { ViewCompat.setTranslationX(view, 0); } if (deltaY != 0) { ViewCompat.setTranslationY(view, 0); } }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, holder.itemView.getHeight() * .25f); ViewCompat.setAlpha(holder.itemView, 0); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, holder.itemView.getHeight()); ViewCompat.setAlpha(holder.itemView, 0); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, -holder.itemView.getHeight()); ViewCompat.setAlpha(holder.itemView, 0); }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) { int top = ((AppBarLayout.Behavior)((CoordinatorLayout.LayoutParams)dependency.getLayoutParams()).getBehavior()).getTopAndBottomOffset(); ViewCompat.setTranslationY(child, -top); return false; } }
@Override public void onAnimationEnd(View view) { oldViewAnim.setListener(null); ViewCompat.setAlpha(view, 1); ViewCompat.setTranslationX(view, 0); ViewCompat.setTranslationY(view, 0); dispatchChangeFinished(changeInfo.oldHolder, true); mChangeAnimations.remove(changeInfo.oldHolder); dispatchFinishedWhenDone(); } }).start();
@Override public void onAnimationEnd(View view) { newViewAnimation.setListener(null); ViewCompat.setAlpha(newView, 1); ViewCompat.setTranslationX(newView, 0); ViewCompat.setTranslationY(newView, 0); dispatchChangeFinished(changeInfo.newHolder, false); mChangeAnimations.remove(changeInfo.newHolder); dispatchFinishedWhenDone(); } }).start();
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder item) { boolean oldItem = false; if (changeInfo.newHolder == item) { changeInfo.newHolder = null; } else if (changeInfo.oldHolder == item) { changeInfo.oldHolder = null; oldItem = true; } else { return false; } ViewCompat.setAlpha(item.itemView, 1); ViewCompat.setTranslationX(item.itemView, 0); ViewCompat.setTranslationY(item.itemView, 0); dispatchChangeFinished(item, oldItem); return true; }
MoveInfo moveInfo = mPendingMoves.get(i); if (moveInfo.holder == item) { ViewCompat.setTranslationY(view, 0); ViewCompat.setTranslationX(view, 0); dispatchMoveFinished(item); MoveInfo moveInfo = moves.get(j); if (moveInfo.holder == item) { ViewCompat.setTranslationY(view, 0); ViewCompat.setTranslationX(view, 0); dispatchMoveFinished(item);
MoveInfo item = mPendingMoves.get(i); View view = item.holder.itemView; ViewCompat.setTranslationY(view, 0); ViewCompat.setTranslationX(view, 0); dispatchMoveFinished(item.holder); ViewHolder item = moveInfo.holder; View view = item.itemView; ViewCompat.setTranslationY(view, 0); ViewCompat.setTranslationX(view, 0); dispatchMoveFinished(moveInfo.holder);
@Override public boolean animateMove(final ViewHolder holder, int fromX, int fromY, int toX, int toY) { final View view = holder.itemView; fromX += ViewCompat.getTranslationX(holder.itemView); fromY += ViewCompat.getTranslationY(holder.itemView); endAnimation(holder); int deltaX = toX - fromX; int deltaY = toY - fromY; if (deltaX == 0 && deltaY == 0) { dispatchMoveFinished(holder); return false; } if (deltaX != 0) { ViewCompat.setTranslationX(view, -deltaX); } if (deltaY != 0) { ViewCompat.setTranslationY(view, -deltaY); } mPendingMoves.add(new MoveInfo(holder, fromX, fromY, toX, toY)); return true; }
@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); } final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView); final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView); final float prevAlpha = ViewCompat.getAlpha(oldHolder.itemView); endAnimation(oldHolder); int deltaX = (int) (toX - fromX - prevTranslationX); int deltaY = (int) (toY - fromY - prevTranslationY); // recover prev translation state after ending animation ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX); ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY); ViewCompat.setAlpha(oldHolder.itemView, prevAlpha); if (newHolder != null && newHolder.itemView != null) { // carry over translation values endAnimation(newHolder); ViewCompat.setTranslationX(newHolder.itemView, -deltaX); ViewCompat.setTranslationY(newHolder.itemView, -deltaY); ViewCompat.setAlpha(newHolder.itemView, 0); } mPendingChanges.add(new ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY)); return true; }
public static void clear(View v) { ViewCompat.setAlpha(v, 1); ViewCompat.setScaleY(v, 1); ViewCompat.setScaleX(v, 1); ViewCompat.setTranslationY(v, 0); ViewCompat.setTranslationX(v, 0); ViewCompat.setRotation(v, 0); ViewCompat.setRotationY(v, 0); ViewCompat.setRotationX(v, 0); ViewCompat.setPivotY(v, v.getMeasuredHeight() / 2); ViewCompat.setPivotX(v, v.getMeasuredWidth() / 2); ViewCompat.animate(v).setInterpolator(null).setStartDelay(0); } }
@Override public void removeAnimationCleanup(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, 0); ViewCompat.setAlpha(holder.itemView, 1); } }
@Override public void addAnimationCleanup(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, 0); ViewCompat.setAlpha(holder.itemView, 1); }
@Override public void addAnimationPrepare(RecyclerView.ViewHolder holder) { retrieveItemPosition(holder); ViewCompat.setTranslationY(holder.itemView, +mDeltaY); ViewCompat.setTranslationZ(holder.itemView, 100); }
@Override public void removeAnimationCleanup(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, 0); ViewCompat.setAlpha(holder.itemView, 1); ViewCompat.setTranslationZ(holder.itemView, 1); }
@Override public void removeAnimationCleanup(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationY(holder.itemView, 0); ViewCompat.setAlpha(holder.itemView, 1); ViewCompat.setTranslationZ(holder.itemView, 1); }
@Override public void onAnimationEnd(View view) { newViewAnimation.setListener(null); changeAnimationCleanup(newHolder); ViewCompat.setTranslationX(newView, 0); ViewCompat.setTranslationY(newView, 0); dispatchChangeFinished(changeInfo.newHolder, false); mChangeAnimations.remove(changeInfo.newHolder); dispatchFinishedWhenDone(); } }).start();