From e74e8a9a4561dbe9bf070624e51ee2df4995aea4 Mon Sep 17 00:00:00 2001 From: gansgar Date: Sat, 15 Dec 2018 20:42:20 +0100 Subject: [PATCH] Add `setProgressInterpolator` --- .../CircularProgressBar.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/budiyev/android/circularprogressbar/CircularProgressBar.java b/src/main/java/com/budiyev/android/circularprogressbar/CircularProgressBar.java index e7e3f7f..c30986d 100644 --- a/src/main/java/com/budiyev/android/circularprogressbar/CircularProgressBar.java +++ b/src/main/java/com/budiyev/android/circularprogressbar/CircularProgressBar.java @@ -24,6 +24,7 @@ package com.budiyev.android.circularprogressbar; import android.animation.Animator; +import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.content.Context; import android.content.res.TypedArray; @@ -67,6 +68,8 @@ public final class CircularProgressBar extends View { private static final boolean DEFAULT_ANIMATE_PROGRESS = true; private static final boolean DEFAULT_DRAW_BACKGROUND_STROKE = false; private static final boolean DEFAULT_INDETERMINATE = false; + private static final TimeInterpolator DEFAULT_PROGRESS_ANIMATOR = new DecelerateInterpolator(); + private final Runnable mSweepRestartAction = new SweepRestartAction(); private final RectF mDrawRect = new RectF(); private final ValueAnimator mProgressAnimator = new ValueAnimator(); @@ -154,6 +157,18 @@ public void setProgress(final float progress) { } } + /** + * Set the current animation interpolator + */ + public void setProgressInterpolator(final TimeInterpolator interpolator) { + if (mVisible) { + if (mProgressAnimator.isRunning()) { + mProgressAnimator.end(); + } + } + mProgressAnimator.setInterpolator(interpolator == null ? DEFAULT_PROGRESS_ANIMATOR : interpolator); + } + /** * Maximum progress for non-indeterminate mode */ @@ -600,7 +615,7 @@ private void initialize(@NonNull final Context context, @Nullable final Attribut } } } - mProgressAnimator.setInterpolator(new DecelerateInterpolator()); + mProgressAnimator.setInterpolator(DEFAULT_PROGRESS_ANIMATOR); mProgressAnimator.addUpdateListener(new ProgressUpdateListener()); mIndeterminateStartAnimator.setFloatValues(360f); mIndeterminateStartAnimator.setRepeatMode(ValueAnimator.RESTART);