package com.flyco.animation; import android.animation.Animator; import android.animation.AnimatorSet; import android.view.View; import android.view.animation.Interpolator; public abstract class BaseAnimatorSet { /** 动画时长,系统默认250 */ protected long duration = 500; protected AnimatorSet animatorSet = new AnimatorSet(); private Interpolator interpolator; private long delay; private AnimatorListener listener; public abstract void setAnimation(View view); protected void start(final View view) { /** 设置动画中心点:pivotX--->X轴方向动画中心点,pivotY--->Y轴方向动画中心点 */ // ViewHelper.setPivotX(view, view.getMeasuredWidth() / 2.0f); // ViewHelper.setPivotY(view, view.getMeasuredHeight() / 2.0f); reset(view); setAnimation(view); animatorSet.setDuration(duration); if (interpolator != null) { animatorSet.setInterpolator(interpolator); } if (delay > 0) { animatorSet.setStartDelay(delay); } if (listener != null) { animatorSet.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { listener.onAnimationStart(animator); } @Override public void onAnimationRepeat(Animator animator) { listener.onAnimationRepeat(animator); } @Override public void onAnimationEnd(Animator animator) { listener.onAnimationEnd(animator); } @Override public void onAnimationCancel(Animator animator) { listener.onAnimationCancel(animator); } }); } animatorSet.start(); } public static void reset(View view) { view.setAlpha(1); view.setScaleX(1); view.setScaleY(1); view.setTranslationX(0); view.setTranslationY(0); view.setRotation(0); view.setRotationY(0); view.setRotationX(0); } /** 设置动画时长 */ public BaseAnimatorSet duration(long duration) { this.duration = duration; return this; } /** 设置动画时长 */ public BaseAnimatorSet delay(long delay) { this.delay = delay; return this; } /** 设置动画插补器 */ public BaseAnimatorSet interpolator(Interpolator interpolator) { this.interpolator = interpolator; return this; } /** 动画监听 */ public BaseAnimatorSet listener(AnimatorListener listener) { this.listener = listener; return this; } /** 在View上执行动画 */ public void playOn(View view) { start(view); } public interface AnimatorListener { void onAnimationStart(Animator animator); void onAnimationRepeat(Animator animator); void onAnimationEnd(Animator animator); void onAnimationCancel(Animator animator); } }