package com.dk.animation.effect.in;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.View;
import com.dk.animation.effect.BaseItemAnimator;
import com.dk.animation.effect.SegmentAnimator;
import com.dk.animation.effect.BaseItemAnimator.VpaListenerAdapter;
public class AnchorDropIn extends SegmentAnimator {
private View mAnchor;
private int[] mLocations = new int[2];
public AnchorDropIn(View anchor) {
super();
mDelay = 200;
mAnchor = anchor;
if (anchor.getParent() != null)
mAnchor.getLocationInWindow(mLocations);
}
@Override
public void animationPrepare(ViewHolder holder) {
mDelayCount = 0;
int[] holderLocations = new int[2];
holder.itemView.getLocationOnScreen(holderLocations);
ViewCompat.setTranslationX(holder.itemView, mLocations[0]
- holderLocations[0]);
ViewCompat.setTranslationY(holder.itemView, mLocations[1]
- holderLocations[1]);
holder.itemView.setPivotX(0);
holder.itemView.setPivotY(0);
ViewCompat.setScaleY(holder.itemView, 0.0f);
ViewCompat.setScaleX(holder.itemView, 0.0f);
}
@Override
public void startAnimation(final ViewHolder holder, long duration,
final BaseItemAnimator animator) {
ViewCompat.animate(holder.itemView).cancel();
ViewCompat.animate(holder.itemView).translationX(0).translationY(0)
.scaleX(1f).scaleY(1f).setDuration(duration)
.setStartDelay(mDelayCount * mDelay)
.setListener(new VpaListenerAdapter() {
@Override
public void onAnimationCancel(View view) {
ViewCompat.setTranslationY(view, 0);
}
@Override
public void onAnimationEnd(View view) {
animator.dispatchAddFinished(holder);
animator.mAddAnimations.remove(holder);
animator.dispatchFinishedWhenDone();
}
}).start();
mDelayCount++;
}
}