package skin.support.animator.SingleAnimator.hide;
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.AccelerateInterpolator;
import android.view.animation.LinearInterpolator;
import skin.support.animator.Action;
import skin.support.animator.SingleAnimator.ViewAnimatorImpl;
import skin.support.animator.SkinAnimator;
/**
* Created by erfli on 2/25/17.
*/
public class RotationHideAnimator extends ViewAnimatorImpl {
private ObjectAnimator hiteAniamator;
private ObjectAnimator rotationAnimator;
private RotationHideAnimator() {
}
public static RotationHideAnimator getInstance() {
return new RotationHideAnimator();
}
@Override
public SkinAnimator apply(@NonNull final View view, @Nullable final Action action) {
view.setPivotY(0);
view.setPivotX(view.getHeight() / 2);
view.animate().translationX(view.getHeight() / 2).setDuration(100).start();
int middle = 45;
int range = 15;
rotationAnimator = ObjectAnimator.ofPropertyValuesHolder(view,
PropertyValuesHolder.ofFloat("rotation",
0, middle - range, middle + range, middle - range, middle + range, middle - range, middle + range)
).setDuration(PRE_DURATION * 8);
rotationAnimator.setStartDelay(100);
rotationAnimator.setInterpolator(new LinearInterpolator());
rotationAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
hiteAniamator.start();
}
});
hiteAniamator = ObjectAnimator.ofPropertyValuesHolder(view,
PropertyValuesHolder.ofFloat("TranslationY", 0, view.getHeight()),
PropertyValuesHolder.ofFloat("alpha", 1, 0));
hiteAniamator.setInterpolator(new AccelerateInterpolator());
hiteAniamator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
resetView(view);
if (action != null) {
action.action();
}
}
});
return this;
}
@Override
public void start() {
rotationAnimator.start();
}
}