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
This commit is contained in:
Doris Liu
2015-10-01 17:27:20 -07:00
parent f86aed1ed3
commit 8b7c99cca2
6 changed files with 14 additions and 13 deletions

View File

@@ -2876,6 +2876,7 @@ package android.animation {
method public android.animation.TimeInterpolator getInterpolator();
method public java.util.ArrayList<android.animation.Animator.AnimatorListener> 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 {

View File

@@ -2975,6 +2975,7 @@ package android.animation {
method public android.animation.TimeInterpolator getInterpolator();
method public java.util.ArrayList<android.animation.Animator.AnimatorListener> 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 {

View File

@@ -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;
}
}
/**

View File

@@ -1030,9 +1030,6 @@ public final class AnimatorSet extends Animator {
}
}
/**
* @hide
*/
@Override
public long getTotalDuration() {
updateAnimatorsDuration();

View File

@@ -536,9 +536,6 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio
return mDuration;
}
/**
* @hide
*/
@Override
public long getTotalDuration() {
if (mRepeatCount == INFINITE) {

View File

@@ -336,9 +336,6 @@ public class RenderNodeAnimator extends Animator {
return mUnscaledDuration;
}
/**
* @hide
*/
@Override
public long getTotalDuration() {
return mUnscaledDuration + mUnscaledStartDelay;