android 动画

来源:互联网 发布:宋松淘宝模特 编辑:程序博客网 时间:2024/06/16 14:23
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();    }}
0 0
原创粉丝点击