From 8b7c99cca2c9996a0ac2d87f24bd3ef83fd10be5 Mon Sep 17 00:00:00 2001 From: Doris Liu Date: Thu, 1 Oct 2015 17:27:20 -0700 Subject: [PATCH] New public API for calculating the total duration of an animation Total duration is the total amount of time an animation takes from start to finish. It include start delay (if any), child animation sequence, accounting for repeat. Change-Id: Id5b36a63c02e25586aefd38612aa5867492e1adb --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ core/java/android/animation/Animator.java | 14 ++++++++++---- core/java/android/animation/AnimatorSet.java | 3 --- core/java/android/animation/ValueAnimator.java | 3 --- core/java/android/view/RenderNodeAnimator.java | 3 --- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/api/current.txt b/api/current.txt index ef18bf9f05f6a..c954a74e7aefb 100644 --- a/api/current.txt +++ b/api/current.txt @@ -2876,6 +2876,7 @@ package android.animation { method public android.animation.TimeInterpolator getInterpolator(); method public java.util.ArrayList getListeners(); method public abstract long getStartDelay(); + method public long getTotalDuration(); method public boolean isPaused(); method public abstract boolean isRunning(); method public boolean isStarted(); @@ -2891,6 +2892,7 @@ package android.animation { method public void setupEndValues(); method public void setupStartValues(); method public void start(); + field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL } public static abstract interface Animator.AnimatorListener { diff --git a/api/system-current.txt b/api/system-current.txt index 0b216bdddb301..2a22f7b6d8a25 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -2975,6 +2975,7 @@ package android.animation { method public android.animation.TimeInterpolator getInterpolator(); method public java.util.ArrayList getListeners(); method public abstract long getStartDelay(); + method public long getTotalDuration(); method public boolean isPaused(); method public abstract boolean isRunning(); method public boolean isStarted(); @@ -2990,6 +2991,7 @@ package android.animation { method public void setupEndValues(); method public void setupStartValues(); method public void start(); + field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL } public static abstract interface Animator.AnimatorListener { diff --git a/core/java/android/animation/Animator.java b/core/java/android/animation/Animator.java index d331c2a066c49..844063c04e83c 100644 --- a/core/java/android/animation/Animator.java +++ b/core/java/android/animation/Animator.java @@ -28,7 +28,6 @@ public abstract class Animator implements Cloneable { /** * The value used to indicate infinite duration (e.g. when Animators repeat infinitely). - * @hide */ public static final long DURATION_INFINITE = -1; /** @@ -191,11 +190,18 @@ public abstract class Animator implements Cloneable { /** * Gets the total duration of the animation, accounting for animation sequences, start delay, * and repeating. Return {@link #DURATION_INFINITE} if the duration is infinite. - * @hide - * TODO: Unhide + * + * @return Total time an animation takes to finish, starting from the time {@link #start()} + * is called. {@link #DURATION_INFINITE} will be returned if the animation or any + * child animation repeats infinite times. */ public long getTotalDuration() { - return getStartDelay() + getDuration(); + long duration = getDuration(); + if (duration == DURATION_INFINITE) { + return DURATION_INFINITE; + } else { + return getStartDelay() + duration; + } } /** diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java index d444638c715a5..1ab55dd7c1d93 100644 --- a/core/java/android/animation/AnimatorSet.java +++ b/core/java/android/animation/AnimatorSet.java @@ -1030,9 +1030,6 @@ public final class AnimatorSet extends Animator { } } - /** - * @hide - */ @Override public long getTotalDuration() { updateAnimatorsDuration(); diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index 4b3df30c778db..6f65889c3b534 100644 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -536,9 +536,6 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio return mDuration; } - /** - * @hide - */ @Override public long getTotalDuration() { if (mRepeatCount == INFINITE) { diff --git a/core/java/android/view/RenderNodeAnimator.java b/core/java/android/view/RenderNodeAnimator.java index 2a3756d6b7b3e..7747580892f1b 100644 --- a/core/java/android/view/RenderNodeAnimator.java +++ b/core/java/android/view/RenderNodeAnimator.java @@ -336,9 +336,6 @@ public class RenderNodeAnimator extends Animator { return mUnscaledDuration; } - /** - * @hide - */ @Override public long getTotalDuration() { return mUnscaledDuration + mUnscaledStartDelay;