android.animation.ValueAnimator.RESTART

Here are the examples of the java api android.animation.ValueAnimator.RESTART taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

107 Examples 7

19 Source : TaobaoLoadingView.java
with Apache License 2.0
from zyyoona7

@Override
protected int getRepeatMode() {
    return ValueAnimator.RESTART;
}

19 Source : IndicatorLoadingView.java
with Apache License 2.0
from zyyoona7

/**
 * 开始旋转
 *
 * @param start
 * @param end
 * @param time
 */
private void startAnim(int start, final int end, long time) {
    isAround = true;
    mCurrentMode = MODE_ROTATE;
    mValueAnimator = ValueAnimator.ofInt(start, end);
    mValueAnimator.setDuration(time);
    mValueAnimator.setRepeatCount(getRepeatCount());
    mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    mValueAnimator.setInterpolator(new LinearInterpolator());
    mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            if (currentValue != (int) (animation.getAnimatedValue())) {
                onAnimatorUpdate(animation);
            }
        }
    });
    mValueAnimator.start();
}

19 Source : ViewfinderView.java
with MIT License
from yuzhiqiang1993

private void initAnimator() {
    if (valueAnimator == null) {
        valueAnimator = ValueAnimator.ofInt(frame.top, frame.bottom);
        valueAnimator.setDuration(3000);
        valueAnimator.setInterpolator(new DecelerateInterpolator());
        valueAnimator.setRepeatMode(ValueAnimator.RESTART);
        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                scanLineTop = (int) animation.getAnimatedValue();
                invalidate();
            }
        });
        valueAnimator.start();
    }
}

19 Source : FrameAnimDrawable.java
with Apache License 2.0
from yangjiantao

private void createAnimator() {
    mAnimator = ValueAnimator.ofInt(RES_IDS.length - 1);
    mAnimator.setInterpolator(new LinearInterpolator());
    mAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mAnimator.setRepeatMode(ValueAnimator.RESTART);
    mAnimator.setDuration(RES_IDS.length / fps * 1000);
    mAnimUpdateListener = new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            invalidate(((int) animation.getAnimatedValue()));
        // System.out.println("FrameAnimDrawable onAnimationUpdate resIndex "+resIndex);
        }
    };
}

19 Source : MiniLoadingView.java
with Apache License 2.0
from xuexiangjys

public void start() {
    if (mAnimator == null) {
        mAnimator = ValueAnimator.ofInt(0, LINE_COUNT - 1);
        mAnimator.addUpdateListener(mUpdateListener);
        mAnimator.setDuration(600);
        mAnimator.setRepeatMode(ValueAnimator.RESTART);
        mAnimator.setRepeatCount(ValueAnimator.INFINITE);
        mAnimator.setInterpolator(new LinearInterpolator());
        mAnimator.start();
    } else if (!mAnimator.isStarted()) {
        mAnimator.start();
    }
}

19 Source : LoadingView.java
with Apache License 2.0
from wangjianxiandev

public void startTranglesAnimation() {
    // 初始化三角形位置
    initTriangle();
    // 如果有动画已经在执行了,取消当前执行的动画。
    if (mValueAnimator != null && mValueAnimator.isRunning()) {
        mValueAnimator.cancel();
    }
    // 动画插值从0变成1
    mValueAnimator = ValueAnimator.ofFloat(0, 1);
    // 每次动画的执行时长为150毫秒
    mValueAnimator.setDuration(150);
    // 无限次执行
    mValueAnimator.setRepeatCount(-1);
    // 每次执行的方案都是从头开始
    mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    // 监听每次动画的循环情况,没循环一次进入下一个阶段
    mValueAnimator.addListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
        }

        @Override
        public void onAnimationEnd(Animator animation) {
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            // 当上一个动画状态执行完之后进入下一个阶段。
            if (currentStatus == STATUS.MID_LOADING) {
                currentStatus = STATUS.FIRST_LOADING;
            } else if (currentStatus == STATUS.FIRST_LOADING) {
                currentStatus = STATUS.SECOND_LOADING;
            } else if (currentStatus == STATUS.SECOND_LOADING) {
                currentStatus = STATUS.THIRD_LOADING;
            } else if (currentStatus == STATUS.THIRD_LOADING) {
                currentStatus = STATUS.LOADING_COMPLETE;
                reverseTriangleStart();
            } else if (currentStatus == STATUS.LOADING_COMPLETE) {
                currentStatus = STATUS.THIRD_DISMISS;
            } else if (currentStatus == STATUS.THIRD_DISMISS) {
                currentStatus = STATUS.FIRST_DISMISS;
            } else if (currentStatus == STATUS.FIRST_DISMISS) {
                currentStatus = STATUS.SECOND_DISMISS;
            } else if (currentStatus == STATUS.SECOND_DISMISS) {
                currentStatus = STATUS.MID_DISMISS;
            } else if (currentStatus == STATUS.MID_DISMISS) {
                currentStatus = STATUS.MID_LOADING;
                reverseTriangleStart();
            }
        }
    });
    // 监听动画执行过程
    mValueAnimator.addUpdateListener(animation -> {
        // 或者目前的插值(0-1)
        float fraction = animation.getAnimatedFraction();
        // 如果目前的动画是消失状态,则插值正好是反过来的,是1-0,所以需要用1-fraction
        if (currentStatus == STATUS.FIRST_DISMISS || currentStatus == STATUS.SECOND_DISMISS || currentStatus == STATUS.THIRD_DISMISS || currentStatus == STATUS.MID_DISMISS) {
            fraction = 1 - fraction;
        }
        // 根据目前执行的状态,取出对应的需要处理的三角形
        TriangleView triangleView = triangles[0];
        if (currentStatus == STATUS.MID_LOADING || currentStatus == STATUS.MID_DISMISS) {
            triangleView = triangles[0];
        } else if (currentStatus == STATUS.FIRST_LOADING || currentStatus == STATUS.FIRST_DISMISS) {
            triangleView = triangles[1];
        } else if (currentStatus == STATUS.SECOND_LOADING || currentStatus == STATUS.SECOND_DISMISS) {
            triangleView = triangles[2];
        } else if (currentStatus == STATUS.THIRD_LOADING || currentStatus == STATUS.THIRD_DISMISS) {
            triangleView = triangles[3];
        } else if (currentStatus == STATUS.LOADING_COMPLETE) {
            // 如果是LOADING_COMPLETE状态的话,此次动画效果保持不变
            invalidate();
            return;
        }
        // 这里是三角形变化的过程,计算目前current的坐标应当处在什么位置上
        // 当fration为0的时候,current的坐标为start位置,当fratcion为1的时候,current的坐标是end位置
        triangleView.currentX1 = (int) (triangleView.startX + fraction * (triangleView.endX1 - triangleView.startX));
        triangleView.currentY1 = (int) (triangleView.startY + fraction * (triangleView.endY1 - triangleView.startY));
        triangleView.currentX2 = (int) (triangleView.startX + fraction * (triangleView.endX2 - triangleView.startX));
        triangleView.currentY2 = (int) (triangleView.startY + fraction * (triangleView.endY2 - triangleView.startY));
        invalidate();
    });
    mValueAnimator.start();
}

19 Source : PathView.java
with MIT License
from totond

protected void initAnimator(float start, float end, int animationStyle, int repeatCount) {
    mAnimator = ValueAnimator.ofFloat(start, end);
    mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            mStop = (float) valueAnimator.getAnimatedValue();
            drawPath(mStop);
        }
    });
    if (mAnimatorListener == null) {
        mAnimatorListener = new PathAnimatorListener();
        mAnimatorListener.setTarget(this);
    }
    mAnimator.removeAllListeners();
    mAnimator.addListener(mAnimatorListener);
    mAnimator.setDuration(mDuration);
    mAnimator.setInterpolator(new LinearInterpolator());
    if (animationStyle == RESTART) {
        mAnimator.setRepeatMode(ValueAnimator.RESTART);
        mAnimator.setRepeatCount(repeatCount);
    } else if (animationStyle == REVERSE) {
        mAnimator.setRepeatMode(ValueAnimator.REVERSE);
        mAnimator.setRepeatCount(repeatCount);
    }
}

19 Source : SunRefreshDraw.java
with Apache License 2.0
from tohodog

private void setupAnimations() {
    mScrollAnimator = new ValueAnimator();
    mScrollAnimator.setFloatValues(0, 1);
    mScrollAnimator.setRepeatCount(Animation.INFINITE);
    mScrollAnimator.setRepeatMode(ValueAnimator.RESTART);
    mScrollAnimator.setInterpolator(LINEAR_INTERPOLATOR);
    mScrollAnimator.setDuration(ANIMATION_DURATION);
    mScrollAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            setRotate((float) animation.getAnimatedValue());
        }
    });
}

19 Source : GlobalPlay.java
with Apache License 2.0
from TanZhiL

private void init() {
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
    mPaint.setColor(Color.BLACK);
    mPaint.setStyle(Paint.Style.STROKE);
    setBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.notification_default));
    mBpPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
    mMatrix = new Matrix();
    mAnimator = ValueAnimator.ofInt(360);
    mAnimator.setDuration(5000);
    mAnimator.setInterpolator(new LinearInterpolator());
    mAnimator.setRepeatMode(ValueAnimator.RESTART);
    mAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mAnimator.addUpdateListener(this);
    mPathEffect = new CornerPathEffect(NavigationUtil.dip2px(getContext(), 2));
}

19 Source : Hasher.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(1500);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

19 Source : WaveView.java
with The Unlicense
from ssynhtn

public void startAnimation() {
    if (USE_ANIMATION) {
        if (animatorSet != null)
            return;
        animatorSet = new AnimatorSet();
        List<Animator> animators = new ArrayList<>();
        boolean first = true;
        for (WaveData waveData : waveDataList) {
            ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
            animator.setDuration(waveData.getDuration());
            animator.setInterpolator(new LinearInterpolator());
            animator.setRepeatMode(ValueAnimator.RESTART);
            animator.setRepeatCount(ValueAnimator.INFINITE);
            if (first) {
                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                    @Override
                    public void onAnimationUpdate(ValueAnimator valueAnimator) {
                        // Log.d(TAG, "onAnimationUpdate");
                        ViewCompat.postInvalidateOnAnimation(WaveView.this);
                    }
                });
            }
            first = false;
            waveData.valueAnimator = animator;
            animators.add(animator);
        }
        animatorSet.playTogether(animators);
        animatorSet.start();
    }
}

19 Source : DiceLoadingView.java
with MIT License
from samlss

private void setupAnimator() {
    release();
    if (getChildCount() < FIXED_CHILD_COUNT) {
        return;
    }
    mValueAnimator = ValueAnimator.ofInt(0, mChildWidth * 4);
    mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            mAnimatedValue = (int) valueAnimator.getAnimatedValue();
            scrollTo(mAnimatedValue + mChildWidth, 0);
            invalidate();
        }
    });
    mValueAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationRepeat(Animator animation) {
            scrollTo(mChildWidth, 0);
        }
    });
    mValueAnimator.setInterpolator(mInterpolator);
    mValueAnimator.setDuration(mDuration);
    mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mValueAnimator.start();
}

19 Source : CubeLoadingView.java
with MIT License
from samlss

private void setupAnimator() {
    if (getChildCount() < FIXED_CHILD_COUNT) {
        return;
    }
    mValueAnimator = ValueAnimator.ofInt(0, mHeight * 4);
    mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            mAnimatedValue = (int) valueAnimator.getAnimatedValue();
            scrollTo(0, mAnimatedValue);
            invalidate();
        }
    });
    mValueAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationRepeat(Animator animation) {
            scrollTo(0, 0);
        }
    });
    mValueAnimator.setInterpolator(new AnticipateOvershootInterpolator(0.8f));
    mValueAnimator.setDuration(2500);
    mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mValueAnimator.start();
}

19 Source : CoffeeView.java
with MIT License
from samlss

private void setupAnimators(float vaporHeight) {
    release();
    mAnimatorValues = new float[VAPOR_COUNT];
    for (int i = 0; i < VAPOR_COUNT; i++) {
        mAnimatorValues[i] = 0f;
        ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, -vaporHeight);
        final int finalI = i;
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                mAnimatorValues[finalI] = (float) valueAnimator.getAnimatedValue();
                invalidate();
            }
        });
        valueAnimator.setDuration(1000);
        valueAnimator.setInterpolator(new LinearInterpolator());
        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
        valueAnimator.setRepeatMode(ValueAnimator.RESTART);
        mValueAnimators.add(valueAnimator);
    }
}

19 Source : WaveDrawable.java
with Apache License 2.0
from REBOOTERS

private ValueAnimator getDefaultAnimator() {
    ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
    animator.setInterpolator(new DecelerateInterpolator());
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.setDuration(5000);
    return animator;
}

19 Source : ShapeRipple.java
with Apache License 2.0
from poldz123

/**
 * Start the {@link #rippleValueAnimator} with specified duration for each ripple.
 *
 * @param millis the duration in milliseconds
 */
void start(int millis) {
    // Do a ripple value renderer
    rippleValueAnimator = ValueAnimator.ofFloat(0f, 1f);
    rippleValueAnimator.setDuration(millis);
    rippleValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    rippleValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    rippleValueAnimator.setInterpolator(rippleInterpolator);
    rippleValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            render((Float) animation.getAnimatedValue());
        }
    });
    rippleValueAnimator.start();
}

19 Source : OilTableLine.java
with Apache License 2.0
from openXu

public void startAnimator() {
    ValueAnimator animator = ValueAnimator.ofFloat(0, 240);
    animator.setDuration(40000);
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            mCurrentDegree = (int) (0 + (Float) animation.getAnimatedValue());
            invalidate();
        }
    });
    animator.start();
}

19 Source : WaveViewDraw.java
with MIT License
from NickKJ

/**
 * 动画
 */
private void startWaveAnimation() {
    Point startPoint = new Point(0, START_POSITION);
    Point endPoint = new Point(1920, START_POSITION);
    ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(), startPoint, endPoint);
    anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            currentPoint = (Point) animation.getAnimatedValue();
            invalidate();
        }
    });
    anim.setInterpolator(new LinearInterpolator());
    anim.setDuration(duration);
    anim.setRepeatMode(ValueAnimator.RESTART);
    anim.setRepeatCount(Animation.INFINITE);
    anim.start();
}

19 Source : ChrysanthemumLoadingView.java
with Apache License 2.0
from MrDeclanCoder

@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    ValueAnimator valueAnimator = ValueAnimator.ofInt(12, 1);
    valueAnimator.setDuration(1000);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            control = (int) animation.getAnimatedValue();
            invalidate();
        }
    });
    valueAnimator.start();
}

19 Source : ElevationAnimationDemoFragment.java
with Apache License 2.0
from material-components

private void startTranslationZAnimation(View view, MaterialShapeDrawable materialShapeDrawable, float maxTranslationZ) {
    ValueAnimator animator = ValueAnimator.ofFloat(0, maxTranslationZ);
    animator.setDuration(ANIMATION_DURATION_MILLIS);
    animator.setStartDelay(ANIMATION_START_DELAY_MILLIS);
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.addUpdateListener(animation -> setTranslationZ(view, materialShapeDrawable, (float) animation.getAnimatedValue()));
    animator.start();
}

19 Source : CircularProgressDrawable.java
with Apache License 2.0
from lzls

private void setupAnimators() {
    final Ring ring = mRing;
    final ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
    animator.addUpdateListener(animation -> {
        float interpolatedTime = (float) animation.getAnimatedValue();
        updateRingColor(interpolatedTime, ring);
        applyTransformation(interpolatedTime, ring, false);
        invalidateSelf();
    });
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.setInterpolator(LINEAR_INTERPOLATOR);
    animator.addListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animator) {
            mRotationCount = 0;
        }

        @Override
        public void onAnimationEnd(Animator animator) {
        // do nothing
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        // do nothing
        }

        @Override
        public void onAnimationRepeat(Animator animator) {
            applyTransformation(1f, ring, true);
            ring.storeOriginals();
            ring.goToNextColor();
            if (mFinishing) {
                // finished closing the last ring from the swipe gesture; go
                // into progress mode
                mFinishing = false;
                animator.cancel();
                animator.setDuration(ANIMATION_DURATION);
                animator.start();
                ring.setShowArrow(false);
            } else {
                mRotationCount = mRotationCount + 1;
            }
        }
    });
    mAnimator = animator;
}

19 Source : LVFinePoiStar.java
with Apache License 2.0
from luckybilly

@Override
protected int SetAnimRepeatMode() {
    return ValueAnimator.RESTART;
}

19 Source : SearchView.java
with Apache License 2.0
from jeanboydev

private void initListener() {
    updateListener = new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            currentValue = (float) animation.getAnimatedValue();
            postInvalidate();
        }
    };
    startValueAnimator = ValueAnimator.ofFloat(0f, 1f).setDuration(ANIM_DURATION);
    loadingValueAnimator = ValueAnimator.ofFloat(0f, 1f).setDuration(ANIM_DURATION);
    loadingValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    loadingValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    endValueAnimator = ValueAnimator.ofFloat(1f, 0f).setDuration(ANIM_DURATION);
    startValueAnimator.addUpdateListener(updateListener);
    loadingValueAnimator.addUpdateListener(updateListener);
    endValueAnimator.addUpdateListener(updateListener);
    startValueAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            nowState = STATE_LOADING;
            loadingValueAnimator.start();
        }
    });
    endValueAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            isSearching = false;
            nowState = STATE_NONE;
        }
    });
}

19 Source : GraduallyTextView.java
with Apache License 2.0
from HeYongRui

public void init() {
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStyle(Paint.Style.FILL);
    setBackgroundDrawable(null);
    setCursorVisible(false);
    setFocusable(false);
    setEnabled(false);
    setFocusableInTouchMode(false);
    valueAnimator = ValueAnimator.ofFloat(0, 100).setDuration(duration);
    valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
    valueAnimator.setRepeatCount(Animation.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            progress = (Float) valueAnimator.getAnimatedValue();
            invalidate();
        }
    });
}

19 Source : BubbleProgressBar.java
with MIT License
from hapramp

private void tryAnimation() {
    final ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            for (int i = 0; i < BUBBLE_COUNT; i++) {
                radiuses[i] = mBubbleMaxRadiusInPx * getFactor((Integer) valueAnimator.getAnimatedValue(), i);
            }
            invalidate();
        }
    });
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setRepeatCount(10000);
    valueAnimator.setDuration(2000);
    valueAnimator.start();
}

19 Source : CircularProgressDrawable.java
with Apache License 2.0
from grishka

private void setupAnimators() {
    final Ring ring = mRing;
    final ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float interpolatedTime = (float) animation.getAnimatedValue();
            updateRingColor(interpolatedTime, ring);
            applyTransformation(interpolatedTime, ring, false);
            invalidateSelf();
        }
    });
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.setInterpolator(LINEAR_INTERPOLATOR);
    animator.addListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animator) {
            mRotationCount = 0;
        }

        @Override
        public void onAnimationEnd(Animator animator) {
        // do nothing
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        // do nothing
        }

        @Override
        public void onAnimationRepeat(Animator animator) {
            applyTransformation(1f, ring, true);
            ring.storeOriginals();
            ring.goToNextColor();
            if (mFinishing) {
                // finished closing the last ring from the swipe gesture; go
                // into progress mode
                mFinishing = false;
                animator.cancel();
                animator.setDuration(ANIMATION_DURATION);
                animator.start();
                ring.setShowArrow(false);
            } else {
                mRotationCount = mRotationCount + 1;
            }
        }
    });
    mAnimator = animator;
}

19 Source : RefreshView.java
with Apache License 2.0
from gminibird

private void initAnimator() {
    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
    animator.setDuration(1500);
    animator.setRepeatCount(-1);
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.setInterpolator(new LinearInterpolator());
    animator.addListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
            // 确保View达到可以刷新的状态
            prepareToStart();
        }

        @Override
        public void onAnimationEnd(Animator animation) {
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
        }
    });
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            for (Circle circle : mCircles) {
                updateCircle(circle, mCircles.indexOf(circle), animation.getAnimatedFraction());
            }
            postInvalidate();
        }
    });
    mAnimator = animator;
}

19 Source : StepView.java
with Apache License 2.0
from GaoGersy

// 加载手环数据动画
private void startLoading() {
    final float startDegree = 0f;
    final float endDegree = 360f;
    secondAnim = ValueAnimator.ofFloat(startDegree, endDegree);
    secondAnim.setDuration(1000);
    secondAnim.setInterpolator(new LinearOutSlowInInterpolator());
    secondAnim.setRepeatMode(ValueAnimator.RESTART);
    secondAnim.setRepeatCount(ValueAnimator.INFINITE);
    secondAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        private float lastDrawValue = 0;

        private float drawInterval = 0.1f;

        private float lastUpdatePointerValue = 0;

        private float updatePointerInterval = 360 / 60 * 5;

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float newValue = (float) animation.getAnimatedValue();
            // Check if it is the time to update pointer position
            float increasedPointerValue = newValue - lastUpdatePointerValue;
            if (increasedPointerValue < 0) {
                increasedPointerValue = endDegree + increasedPointerValue;
            }
            if (increasedPointerValue >= updatePointerInterval) {
                lastUpdatePointerValue = newValue;
            // updateTimePointer();
            }
            // Check if it is the time to invalidate
            float increasedDrawValue = newValue - lastDrawValue;
            if (increasedDrawValue < 0) {
                increasedDrawValue = endDegree + increasedDrawValue;
            }
            if (increasedDrawValue >= drawInterval) {
                lastDrawValue = newValue;
                rotateSecondPointer += increasedDrawValue;
                Log.d("aa", rotateSecondPointer + "");
                invalidate();
            }
        }
    });
    secondAnim.start();
}

19 Source : CircleView.java
with Apache License 2.0
from finalrose7

private void initRotateAnimation() {
    if (mRotateOrientation == ROTATE_CLOCKWISE) {
        mRotateValues = 360f;
    } else if (mRotateOrientation == ROTATE_ANTICLOCKWISE) {
        mRotateValues = -360f;
    }
    mAnimator = ValueAnimator.ofFloat(0f, mRotateValues);
    mAnimator.setInterpolator(new LinearInterpolator());
    mAnimator.setDuration(mSpeed);
    mAnimator.addUpdateListener(this);
    mAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mAnimator.setRepeatMode(ValueAnimator.RESTART);
}

19 Source : GraduallyTextView.java
with Mozilla Public License 2.0
from clementf2b

public void init() {
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStyle(Paint.Style.FILL);
    setBackground(null);
    setCursorVisible(false);
    setFocusable(false);
    setEnabled(false);
    setFocusableInTouchMode(false);
    valueAnimator = ValueAnimator.ofFloat(0, 100).setDuration(duration);
    valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
    valueAnimator.setRepeatCount(Animation.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            progress = (Float) animation.getAnimatedValue();
            GraduallyTextView.this.invalidate();
        }
    });
}

19 Source : ProgressDrawable.java
with Apache License 2.0
from ckrgithub

// </editor-fold>
private void setupAnimators() {
    mValueAnimator = ValueAnimator.ofInt(30, 3600);
    mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            int value = (int) animation.getAnimatedValue();
            mProgressDegree = 30 * (value / 30);
            invalidateSelf();
        }
    });
    mValueAnimator.setDuration(10000);
    mValueAnimator.setInterpolator(new LinearInterpolator());
    mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
}

19 Source : SongActivity.java
with Apache License 2.0
from brokes6

/**
 * 控制封面旋转
 *
 * @return
 */
private ObjectAnimator getRotateAnimator() {
    if (rotateAnimator == null) {
        rotateAnimator = ObjectAnimator.ofFloat(binding.ivRecord, "rotation", 360f);
        rotateAnimator.setDuration(50 * 1000);
        rotateAnimator.setInterpolator(new LinearInterpolator());
        rotateAnimator.setRepeatCount(100000);
        rotateAnimator.setRepeatMode(ValueAnimator.RESTART);
    }
    return rotateAnimator;
}

19 Source : LoadingView.java
with Apache License 2.0
from bootsrc

private ValueAnimator createAnimator(Interpolator interpolator, long duration) {
    ValueAnimator animator = ValueAnimator.ofFloat(0, 180f);
    animator.setInterpolator(interpolator == null ? defaultInterpolator : interpolator);
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.setRepeatMode(ValueAnimator.RESTART);
    animator.setDuration(duration == 0 ? DEFAULT_DURATION : duration);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            currentDegree = (float) animation.getAnimatedValue();
            invalidate();
        }
    });
    return animator;
}

19 Source : RingProgress.java
with MIT License
from AniTrend

private ValueAnimator startViewAnim(float startF, final float endF, long time) {
    valueAnimator = ValueAnimator.ofFloat(startF, endF);
    valueAnimator.setDuration(time);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.setRepeatCount(0);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            mAnimatedValue = (float) valueAnimator.getAnimatedValue();
            invalidate();
        }
    });
    valueAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
        }

        @Override
        public void onAnimationStart(Animator animation) {
            super.onAnimationStart(animation);
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            super.onAnimationRepeat(animation);
        }
    });
    if (!valueAnimator.isRunning()) {
        valueAnimator.start();
    }
    return valueAnimator;
}

19 Source : AnimatorInflaterCompat.java
with Apache License 2.0
from androidx

/**
 * @param anim                The animator, must not be null
 * @param arrayAnimator       Incoming typed array for Animator's attributes.
 * @param arrayObjectAnimator Incoming typed array for Object Animator's
 *                            attributes.
 * @param pixelSize           The relative pixel size, used to calculate the
 *                            maximum error for path animations.
 */
private static void parseAnimatorFromTypeArray(ValueAnimator anim, TypedArray arrayAnimator, TypedArray arrayObjectAnimator, float pixelSize, XmlPullParser parser) {
    long duration = TypedArrayUtils.getNamedInt(arrayAnimator, parser, "duration", AndroidResources.STYLEABLE_ANIMATOR_DURATION, 300);
    long startDelay = TypedArrayUtils.getNamedInt(arrayAnimator, parser, "startOffset", AndroidResources.STYLEABLE_ANIMATOR_START_OFFSET, 0);
    int valueType = TypedArrayUtils.getNamedInt(arrayAnimator, parser, "valueType", AndroidResources.STYLEABLE_ANIMATOR_VALUE_TYPE, VALUE_TYPE_UNDEFINED);
    // Change to requiring both value from and to, otherwise, throw exception for now.
    if (TypedArrayUtils.hasAttribute(parser, "valueFrom") && TypedArrayUtils.hasAttribute(parser, "valueTo")) {
        if (valueType == VALUE_TYPE_UNDEFINED) {
            valueType = inferValueTypeFromValues(arrayAnimator, AndroidResources.STYLEABLE_ANIMATOR_VALUE_FROM, AndroidResources.STYLEABLE_ANIMATOR_VALUE_TO);
        }
        PropertyValuesHolder pvh = getPVH(arrayAnimator, valueType, AndroidResources.STYLEABLE_ANIMATOR_VALUE_FROM, AndroidResources.STYLEABLE_ANIMATOR_VALUE_TO, "");
        if (pvh != null) {
            anim.setValues(pvh);
        }
    }
    anim.setDuration(duration);
    anim.setStartDelay(startDelay);
    anim.setRepeatCount(TypedArrayUtils.getNamedInt(arrayAnimator, parser, "repeatCount", AndroidResources.STYLEABLE_ANIMATOR_REPEAT_COUNT, 0));
    anim.setRepeatMode(TypedArrayUtils.getNamedInt(arrayAnimator, parser, "repeatMode", AndroidResources.STYLEABLE_ANIMATOR_REPEAT_MODE, ValueAnimator.RESTART));
    if (arrayObjectAnimator != null) {
        setupObjectAnimator(anim, arrayObjectAnimator, valueType, pixelSize, parser);
    }
}

19 Source : BaseNiboFragment.java
with MIT License
from aliumujib

protected void startOverlayAnimation(final GroundOverlay groundOverlay) {
    AnimatorSet animatorSet = new AnimatorSet();
    ValueAnimator vAnimator = ValueAnimator.ofInt(0, 100);
    vAnimator.setRepeatCount(ValueAnimator.INFINITE);
    vAnimator.setRepeatMode(ValueAnimator.RESTART);
    vAnimator.setInterpolator(new LinearInterpolator());
    vAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            final Integer val = (Integer) valueAnimator.getAnimatedValue();
            groundOverlay.setDimensions(val);
        }
    });
    ValueAnimator tAnimator = ValueAnimator.ofFloat(0, 1);
    tAnimator.setRepeatCount(ValueAnimator.INFINITE);
    tAnimator.setRepeatMode(ValueAnimator.RESTART);
    tAnimator.setInterpolator(new LinearInterpolator());
    tAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            Float val = (Float) valueAnimator.getAnimatedValue();
            groundOverlay.setTransparency(val);
        }
    });
    animatorSet.setDuration(3000);
    animatorSet.playTogether(vAnimator, tAnimator);
    animatorSet.start();
}

18 Source : RegisterLayout.java
with Apache License 2.0
from zuoweitan

private void initAnimators() {
    mValueAnimator = ValueAnimator.ofFloat(0, 1);
    mValueAnimator.setDuration(700);
    mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
    mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mValueAnimator.addUpdateListener(animation -> {
        mSendCodeBtn.setmFraction(animation.getAnimatedFraction());
        mSendCodeBtn.postInvalidate();
    });
}

18 Source : LoadingRenderer.java
with Apache License 2.0
from yanzhenjie

private void setupAnimators() {
    mRenderAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
    mRenderAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mRenderAnimator.setRepeatMode(ValueAnimator.RESTART);
    mRenderAnimator.setDuration(mDuration);
    mRenderAnimator.setInterpolator(new LinearInterpolator());
    mRenderAnimator.addUpdateListener(mAnimatorUpdateListener);
}

18 Source : CircularRingView.java
with Apache License 2.0
from yangchong211

private ValueAnimator startViewAnim(float startF, final float endF, long time) {
    valueAnimator = ValueAnimator.ofFloat(startF, endF);
    valueAnimator.setDuration(time);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float value = (float) valueAnimator.getAnimatedValue();
            startAngle = 360 * value;
            invalidate();
        }
    });
    valueAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
        }
    });
    if (!valueAnimator.isRunning()) {
        valueAnimator.start();
    }
    return valueAnimator;
}

18 Source : PathBitmapMesh.java
with Apache License 2.0
from xujiaji

private void startWaveAnim(Bitmap bitmap, float waves, int animDuration) {
    pathOffset = ValueAnimator.ofFloat(0, ((bitmap.getWidth() / waves) * 2f) / bitmap.getWidth()).setDuration(animDuration);
    pathOffset.setRepeatCount(ValueAnimator.INFINITE);
    pathOffset.setRepeatMode(ValueAnimator.RESTART);
    pathOffset.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            pathOffsetPercent = (float) animation.getAnimatedValue();
        }
    });
    pathOffset.setInterpolator(new LinearInterpolator());
    pathOffset.start();
}

18 Source : TipsLoadingView.java
with Apache License 2.0
from xiaohaibin

public void start() {
    if (mAnimator == null) {
        mAnimator = ValueAnimator.ofInt(0, LINE_COUNT - 1);
        mAnimator.addUpdateListener(mUpdateListener);
        mAnimator.setDuration(900);
        mAnimator.setRepeatMode(ValueAnimator.RESTART);
        mAnimator.setRepeatCount(ValueAnimator.INFINITE);
        mAnimator.setInterpolator(new LinearInterpolator());
        mAnimator.start();
    } else if (!mAnimator.isStarted()) {
        mAnimator.start();
    }
}

18 Source : Ventilator.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 15);
    valueAnimator.setDuration(1000);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            pos = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : Triplex.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(2000);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : TimeMachine.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(1000);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : InCircle.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(800);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : HalfMoon.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(1500);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : Circular.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator1 = ValueAnimator.ofInt(0, 360);
    valueAnimator1.setDuration(1500);
    valueAnimator1.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator1.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator1.setInterpolator(new LinearInterpolator());
    valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
        // getTarget().invalidate();
        }
    });
    setAnimator2();
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator1);
    animators.add(valueAnimator2);
    animators.add(valueAnimator3);
    return animators;
}

18 Source : Chronos.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(7000);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : Alternative.java
with Apache License 2.0
from syedowaisali

@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(3000);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);
    return animators;
}

18 Source : JumpingBeansSpan.java
with MIT License
from stytooldex

private void initIfNecessary(float ascent) {
    if (jumpAnimator != null) {
        return;
    }
    this.shift = 0;
    int maxShift = (int) ascent / 2;
    jumpAnimator = ValueAnimator.ofInt(0, maxShift);
    jumpAnimator.setDuration(loopDuration).setStartDelay(delay);
    jumpAnimator.setInterpolator(new JumpInterpolator(animatedRange));
    jumpAnimator.setRepeatCount(ValueAnimator.INFINITE);
    jumpAnimator.setRepeatMode(ValueAnimator.RESTART);
    jumpAnimator.addUpdateListener(this);
    jumpAnimator.start();
}

See More Examples