package com.lyft.scoop.transitions;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.annotation.TargetApi;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import com.lyft.scoop.TransitionListener;
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
public class VeritcalSlideTransition extends ObjectAnimatorTransition {
private boolean isUpward;
public VeritcalSlideTransition(boolean downward) {
this.isUpward = downward;
}
@Override
public void performTranslate(final ViewGroup root, final View from, View to, final TransitionListener transitionListener) {
Animator animator = createAnimator(from, to);
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
root.removeView(from);
transitionListener.onTransitionCompleted();
}
});
animator.start();
}
private Animator createAnimator(View from, View to) {
int fromTranslation = isUpward ? -from.getHeight() : from.getHeight();
int toTranslation = isUpward ? to.getHeight() : -to.getHeight();
AnimatorSet set = new AnimatorSet();
set.play(ObjectAnimator.ofFloat(from, View.TRANSLATION_Y, fromTranslation));
set.play(ObjectAnimator.ofFloat(to, View.TRANSLATION_Y, toTranslation, 0));
return set;
}
}