动画

作者: HOLLE_karry | 来源:发表于2020-12-28 14:06 被阅读0次
import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.TranslateAnimation;

public class AnimationUtil {
    /**
     * 播放放大动画
     * @param view
     */
    public static AnimatorSet startScaleToBigAnimation(final View view, float rate, AnimatorListener animatorListener) {
        if (null != view.getAnimation()) {

            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "scaleY", 1.0f, rate);
        oa.setDuration(240);
        oa.setInterpolator(new DecelerateInterpolator());

        ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, rate);
        oa1.setDuration(240);
        oa1.setInterpolator(new DecelerateInterpolator());
        set.playTogether(oa, oa1);
        if (null != animatorListener) {
            set.addListener(animatorListener);
        }
        set.start();
        return set;
    }

    public static AnimatorSet startScaleToBigAnimation(final View view, float rate, AnimatorListener animatorListener, long duration) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "scaleY", 1.0f, rate);
        oa.setDuration(duration);
        oa.setInterpolator(new DecelerateInterpolator());
        ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, rate);
        oa1.setDuration(duration);
        oa1.setInterpolator(new DecelerateInterpolator());
        set.playTogether(oa, oa1);
        if (null != animatorListener) {
            set.addListener(animatorListener);
        }
        set.start();
        return set;
    }

    /**
     * 播放缩小动画
     * @param view
     */
    public static AnimatorSet startScaleToSmallAnimation(View view, float rate, AnimatorListener animatorListener) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "scaleY", rate, 1.0f);
        oa.setDuration(140);
        oa.setInterpolator(new DecelerateInterpolator());
        ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", rate, 1.0f);
        oa1.setDuration(140);
        oa1.setInterpolator(new DecelerateInterpolator());
        set.playTogether(oa, oa1);
        set.start();
        return set;
    }

    /**
     * 播放缩小动画
     * @param view
     */
    public static AnimatorSet startScaleToSmallAnimation(View view, float rate, int time, AnimatorListener animatorListener) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "scaleY", rate, 0.9f,1.1f,1.0f);
        oa.setDuration(time);
        oa.setInterpolator(new LinearInterpolator());
        ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", rate, 0.9f,1.1f,1.0f);
        oa1.setDuration(time);
        oa1.setInterpolator(new LinearInterpolator());
        set.playTogether(oa, oa1);
        set.start();
        return set;
    }

    public static AnimatorSet startScaleToSmallAnimation(View view, float rate, AnimatorListener animatorListener, long duration) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "scaleY", rate, 1.0f);
        oa.setDuration(duration);
        oa.setInterpolator(new DecelerateInterpolator());
        ObjectAnimator oa1 = ObjectAnimator.ofFloat(view, "scaleX", rate, 1.0f);
        oa1.setDuration(duration);
        oa1.setInterpolator(new DecelerateInterpolator());
        set.playTogether(oa, oa1);
        set.start();
        return set;
    }

    public static void startRotateAnimation(View v, int duration) {
        ObjectAnimator oa = ObjectAnimator.ofFloat(v, "rotation", 0f, 360f);
        oa.setDuration(duration);
        oa.setInterpolator(new LinearInterpolator());
        oa.setRepeatCount(ValueAnimator.INFINITE);
        oa.start();
    }

    public static void setAnimator(View v, int duration, AnimatorListener listener) {
        final ObjectAnimator animator = ObjectAnimator.ofFloat(v, "rotation", 0f, 360f);
        LinearInterpolator lin = new LinearInterpolator();
        animator.setInterpolator(lin);
        animator.addListener(listener);
        animator.setDuration(duration);
        animator.start();
    }

    public static void clearAnimation(View v) {
        if (null == v) {
            return;
        }

        if (null != v.getAnimation()) {
            v.getAnimation().cancel();
            v.clearAnimation();
        }
    }

    /**
     * 向上移动动画
     * @param view
     * @return
     */
    public static AnimatorSet startTranlateUpAnimation(final View view, final float start, final float end, final int duration, int delayTime) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "translationY", start, end);
        oa.setDuration(duration);
        oa.setInterpolator(new DecelerateInterpolator());
        set.play(oa);
        set.start();
        set.setStartDelay(delayTime);
        return set;
    }

    /**
     * 向下移动动画
     * @param view
     * @return
     */
    public static AnimatorSet startTranlateDownAnimation(final View view, final float start, final float end, final int duration, int delayTime) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "translationY", start, end);
        oa.setDuration(duration);
        oa.setInterpolator(new DecelerateInterpolator());
        set.play(oa);
        set.setStartDelay(delayTime);
        set.start();
        return set;
    }

    /**
     * X轴移动动画
     */
    public static AnimatorSet startTranlateRightAnimation(final View view, final float start, final float end, final int duration) {
        if (null != view.getAnimation()) {
            view.getAnimation().cancel();
        }
        view.clearAnimation();
        AnimatorSet set = new AnimatorSet();
        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "translationX", start, end);
        oa.setDuration(duration);
        oa.setInterpolator(new LinearInterpolator());
        set.play(oa);
        set.start();
        return set;
    }

    public static void upAnimation(final View view, final float y, final int duration) {
        TranslateAnimation animShow = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0,
                Animation.RELATIVE_TO_SELF, 0,
                Animation.RELATIVE_TO_SELF, y,
                Animation.RELATIVE_TO_SELF, 0);
        animShow.setDuration(duration);
        view.startAnimation(animShow);
    }

    public static TranslateAnimation downAnimation(final View view, final float y, final int duration) {
        TranslateAnimation animHide = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0,
                Animation.RELATIVE_TO_SELF, 0,
                Animation.RELATIVE_TO_SELF, 0,
                Animation.RELATIVE_TO_SELF, y);
        animHide.setDuration(duration);
        view.startAnimation(animHide);
        return animHide;
    }
}

相关文章

  • Android回顾--(十六) 动画简析

    动画: 补间动画(Tween动画) 帧动画(Frame动画) 属性动画(Property动画) 补间动画 特点: ...

  • 在山西太原,做个二维动画需要哪些制作流程?

    二维动画有哪些类型? flash动画,课件动画,mg动画,ae动画,GIF动画,手绘动画,网页动画,企业动画,宣传...

  • Android 动画

    【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...

  • 动画学习

    动画 分为 组动画,属性动画,渐变动画,其中属性动画包括 普通动画和关键帧动画,其他动弹动画,动画层分为 pres...

  • Android动画

    Android动画分类: 视图动画:补间动画、逐帧动画 属性动画 视图动画 补间动画 可以在xml中定义动画,然后...

  • iOS动画

    iOS动画-从UIView动画说起iOS动画-Transform和KeyFrame动画iOS动画-layout动画...

  • Android动画之视图动画

    分类 Android动画主要包括视图动画和属性动画。视图动画包括Tween动画和Frame动画。Tween动画又包...

  • Android 动画

    android动画分为三种 帧动画,视图动画(补间动画),属性动画逐帧动画 视图动画 属性动画 Window和A...

  • android动画

    动画: 分类:分为视图动画和属性动画,其中视图动画又分为补间动画和逐帧动画。补间动画又分为平移动画、缩放动画、旋转...

  • Android中的动画概述

    动画可以分为三类:View动画,帧动画,属性动画。 一、View动画 1.View动画包括四种:平移动画,缩放动画...

网友评论

      本文标题:动画

      本文链接:https://www.haomeiwen.com/subject/asqunktx.html