public class AnimationHelper { private static int mOrderIndex = 0; /** * 渐变放大显示 * @param view 动画展示View * @param duration 动画的持续时间 * @param delay 动画的Delay时间 */ public static void doScaleInAnimation(View view, long duration, long delay) { view.setAlpha(0f); PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 0f, 1f); PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("scaleX", 0f, 1f); PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleY", 0f, 1f); ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha, pvhX, pvhY); objectAnimator.setInterpolator(new AccelerateInterpolator(2.0f)); objectAnimator.setDuration(duration); objectAnimator.setStartDelay(delay); objectAnimator.start(); } /** * 渐变缩小消失 * @param view 动画展示View * @param duration 动画的持续时间 * @param delay 动画的Delay时间 */ public static void doScaleOutAnimation(View view, long duration, long delay) { PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1f, 0f); PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("scaleX", 1f, 0f); PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleY", 1f, 0f); ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha, pvhX, pvhY); objectAnimator.setInterpolator(new DecelerateInterpolator(2.0f)); objectAnimator.setDuration(duration); objectAnimator.setStartDelay(delay); objectAnimator.start(); } /** * 渐变缩小消失,并且移除View * @param view 动画展示View * @param duration 动画的持续时间 * @param delay 动画的Delay时间 */ public static void fadeOut(final View view, long duration, long delay) { PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1f, 0f); PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("scaleX", 1f, 0f); PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleY", 1f, 0f); ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha, pvhX, pvhY); objectAnimator.setInterpolator(new DecelerateInterpolator(2.0f)); objectAnimator.setDuration(duration); objectAnimator.setStartDelay(delay); //动画结束后,移除View objectAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { ViewGroup parent = (ViewGroup)view.getParent(); if (null != parent) { parent.removeView(view); } } }); // anim.addListener(new AnimatorListener() // { // // @Override // public void onAnimationStart(Animator animation) // { // } // // @Override // public void onAnimationRepeat(Animator animation) // { // } // // @Override // public void onAnimationEnd(Animator animation) // { // ViewGroup parent = (ViewGroup)view.getParent(); // if (parent != null) // parent.removeView(view); // } // // @Override // public void onAnimationCancel(Animator animation) // { // } // }); objectAnimator.start(); } public static void startViewGroupAnimation(View view, long duration, long delay) { mOrderIndex = 0; bindAnimation(view, 0, duration, delay); } private static void bindAnimation(View view, int depth, long duration, long delay) { if (view instanceof ViewGroup) { ViewGroup group = (ViewGroup)view; for (int i = 0; i < group.getChildCount(); i++) { bindAnimation(group.getChildAt(i), depth + 1, duration, delay); } } else { doSlideLeftEnterAnimation(view, duration, delay * mOrderIndex); mOrderIndex++; } } /** * 从左边进场 * @param view * @param delay */ public static void doSlideLeftEnterAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationX", -300, 0); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从左边退场 * @param view * @param delay */ public static void doSlideLeftOutAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationX", 0, -300); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从右边进场 * @param view * @param delay */ public static void doSlideRightEnterAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationX", 300, 0); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从右边退场 * @param view * @param delay */ public static void doSlideRightOutAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationX", 0, 300); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从上边进场 * @param view * @param delay */ public static void doSlideTopEnterAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationY", -600, 0); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从上边退场 * @param view * @param delay */ public static void doSlideTopOutAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationY", 0, -600); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从下边进场 * @param view * @param delay */ public static void doSlideBottomEnterAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationY", 600, 0); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } /** * 从下边退场 * @param view * @param delay */ public static void doSlideBottomOutAnimation(View view, long duration,long delay) { view.setAlpha(0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationY", 0, 600); objectAnimator.setInterpolator(new DecelerateInterpolator()); ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f); AnimatorSet set = new AnimatorSet(); set.setStartDelay(delay); set.setDuration(duration); set.playTogether(objectAnimator, objectAnimatorAlpha); set.start(); } }
android 动画
最新推荐文章于 2021-05-26 01:38:05 发布