// Path: skin-support/src/main/java/skin/support/animator/Action.java
// public interface Action {
//     void action();
// }
// 
// Path: skin-support/src/main/java/skin/support/animator/SkinAnimator.java
// public interface SkinAnimator {
//     int PRE_DURATION = 200;
//     int AFTER_DURATION = 200;
// 
//     SkinAnimator apply(@NonNull View view, @Nullable Action action);
// 
//     SkinAnimator setPreDuration();
// 
//     SkinAnimator setAfterDuration();
// 
//     SkinAnimator setDuration();
// 
//     void start();
// 
// }


import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.BounceInterpolator;
import skin.support.animator.Action;
import skin.support.animator.SkinAnimator;
        afterAnimator = ObjectAnimator.ofPropertyValuesHolder(targetView,
                PropertyValuesHolder.ofFloat("translationX",
                        view.getRight(), view.getLeft()))
                .setDuration(AFTER_DURATION * 2);
        afterAnimator.setInterpolator(new BounceInterpolator());

        preAnimator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                targetView.setAlpha(1);
                if (action != null) {
                    action.action();
                }
                afterAnimator.start();
            }
        });
        return this;
    }

    @Override
    public SkinAnimator setPreDuration() {
        return this;
    }

    @Override
    public SkinAnimator setAfterDuration() {
        return this;
    }

// Path: skin-support/src/main/java/skin/support/animator/Action.java
// public interface Action {
//     void action();
// }
// 
// Path: skin-support/src/main/java/skin/support/animator/SkinAnimator.java
// public interface SkinAnimator {
//     int PRE_DURATION = 200;
//     int AFTER_DURATION = 200;
// 
//     SkinAnimator apply(@NonNull View view, @Nullable Action action);
// 
//     SkinAnimator setPreDuration();
// 
//     SkinAnimator setAfterDuration();
// 
//     SkinAnimator setDuration();
// 
//     void start();
// 
// }


// Path: skin-support/src/main/java/skin/support/animator/activityAnimator/TranslationAnimator.java
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.BounceInterpolator;
import skin.support.animator.Action;
import skin.support.animator.SkinAnimator;

        afterAnimator = ObjectAnimator.ofPropertyValuesHolder(targetView,
                PropertyValuesHolder.ofFloat("translationX",
                        view.getRight(), view.getLeft()))
                .setDuration(AFTER_DURATION * 2);
        afterAnimator.setInterpolator(new BounceInterpolator());

        preAnimator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                targetView.setAlpha(1);
                if (action != null) {
                    action.action();
                }
                afterAnimator.start();
            }
        });
        return this;
    }

    @Override
    public SkinAnimator setPreDuration() {
        return this;
    }

    @Override
    public SkinAnimator setAfterDuration() {
        return this;
    }

    @Override