package architect.commons.transition;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import architect.ViewTransition;
import architect.ViewTransitionDirection;
/**
* Left / right transition
*
* @author Lukasz Piliszczuk - lukasz.pili@gmail.com
*/
public class LateralViewTransition implements ViewTransition {
protected Config config;
public LateralViewTransition() {
this(new Config().duration(300).interpolator(new AccelerateDecelerateInterpolator()));
}
public LateralViewTransition(Config config) {
this.config = config;
}
@Override
public void transition(View enterView, View exitView, ViewTransitionDirection direction, AnimatorSet set) {
config.configure(set);
if (direction == ViewTransitionDirection.FORWARD || direction == ViewTransitionDirection.REPLACE) {
set.play(ObjectAnimator.ofFloat(enterView, View.TRANSLATION_X, enterView.getWidth(), 0));
set.play(ObjectAnimator.ofFloat(exitView, View.TRANSLATION_X, 0, -exitView.getWidth()));
} else {
set.play(ObjectAnimator.ofFloat(enterView, View.TRANSLATION_X, -enterView.getWidth(), 0));
set.play(ObjectAnimator.ofFloat(exitView, View.TRANSLATION_X, 0, exitView.getWidth()));
}
}
}