Loading api/current.xml +24 −0 Original line number Diff line number Diff line Loading @@ -19914,6 +19914,17 @@ visibility="public" > </method> <method name="getCurrentPlayTime" return="long" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getFrameDelay" return="long" abstract="false" Loading Loading @@ -19993,6 +20004,19 @@ <parameter name="listener" type="android.animation.Animator.AnimatorUpdateListener"> </parameter> </method> <method name="setCurrentPlayTime" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="playTime" type="long"> </parameter> </method> <method name="setEvaluator" return="void" abstract="false" core/java/android/animation/Animator.java +60 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public class Animator extends Animatable { private static final int RUNNING = 1; // Playing normally private static final int CANCELED = 2; // cancel() called - need to end it private static final int ENDED = 3; // end() called - need to end it private static final int SEEKED = 4; // Seeked to some time value /** * Enum values used in XML attributes to indicate the value for mValueType Loading @@ -85,6 +86,12 @@ public class Animator extends Animatable { // to animateFrame() private long mStartTime; /** * Set when setCurrentPlayTime() is called. If negative, animation is not currently seeked * to a value. */ private long mSeekTime = -1; // The static sAnimationHandler processes the internal timing loop on which all animations // are based private static AnimationHandler sAnimationHandler; Loading Loading @@ -144,6 +151,12 @@ public class Animator extends Animatable { private static final ArrayList<Animator> sDelayedAnims = new ArrayList<Animator>(); private static final ArrayList<Animator> sReadyAnims = new ArrayList<Animator>(); /** * Flag that denotes whether the animation is set up and ready to go. Used by seek() to * set up animation that has not yet been started. */ private boolean mInitialized = false; // // Backing variables // Loading Loading @@ -411,6 +424,44 @@ public class Animator extends Animatable { } mPlayingBackwards = false; mCurrentIteration = 0; mInitialized = true; } /** * Sets the position of the animation to the specified point in time. This time should * be between 0 and the total duration of the animation, including any repetition. If * the animation has not yet been started, then it will not advance forward after it is * set to this time; it will simply set the time to this value and perform any appropriate * actions based on that time. If the animation is already running, then seek() will * set the current playing time to this value and continue playing from that point. * * @param playTime The time, in milliseconds, to which the animation is advanced or rewound. */ public void setCurrentPlayTime(long playTime) { if (!mInitialized) { initAnimation(); } long currentTime = AnimationUtils.currentAnimationTimeMillis(); if (mPlayingState != RUNNING) { mSeekTime = playTime; mPlayingState = SEEKED; } mStartTime = currentTime - playTime; animationFrame(currentTime); } /** * Gets the current position of the animation in time, which is equal to the current * time minus the time that the animation started. An animation that is not yet started will * return a value of zero. * * @return The current position in time of the animation. */ public long getCurrentPlayTime() { if (!mInitialized) { return 0; } return AnimationUtils.currentAnimationTimeMillis() - mStartTime; } /** Loading Loading @@ -740,6 +791,7 @@ public class Animator extends Animatable { } public void start() { mPlayingState = STOPPED; sPendingAnimations.add(this); if (sAnimationHandler == null) { sAnimationHandler = new AnimationHandler(); Loading Loading @@ -845,10 +897,17 @@ public class Animator extends Animatable { if (mPlayingState == STOPPED) { mPlayingState = RUNNING; if (mSeekTime < 0) { mStartTime = currentTime; } else { mStartTime = currentTime - mSeekTime; // Now that we're playing, reset the seek time mSeekTime = -1; } } switch (mPlayingState) { case RUNNING: case SEEKED: float fraction = (float)(currentTime - mStartTime) / mDuration; if (fraction >= 1f) { if (mCurrentIteration < mRepeatCount || mRepeatCount == INFINITE) { Loading Loading
api/current.xml +24 −0 Original line number Diff line number Diff line Loading @@ -19914,6 +19914,17 @@ visibility="public" > </method> <method name="getCurrentPlayTime" return="long" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getFrameDelay" return="long" abstract="false" Loading Loading @@ -19993,6 +20004,19 @@ <parameter name="listener" type="android.animation.Animator.AnimatorUpdateListener"> </parameter> </method> <method name="setCurrentPlayTime" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="playTime" type="long"> </parameter> </method> <method name="setEvaluator" return="void" abstract="false"
core/java/android/animation/Animator.java +60 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public class Animator extends Animatable { private static final int RUNNING = 1; // Playing normally private static final int CANCELED = 2; // cancel() called - need to end it private static final int ENDED = 3; // end() called - need to end it private static final int SEEKED = 4; // Seeked to some time value /** * Enum values used in XML attributes to indicate the value for mValueType Loading @@ -85,6 +86,12 @@ public class Animator extends Animatable { // to animateFrame() private long mStartTime; /** * Set when setCurrentPlayTime() is called. If negative, animation is not currently seeked * to a value. */ private long mSeekTime = -1; // The static sAnimationHandler processes the internal timing loop on which all animations // are based private static AnimationHandler sAnimationHandler; Loading Loading @@ -144,6 +151,12 @@ public class Animator extends Animatable { private static final ArrayList<Animator> sDelayedAnims = new ArrayList<Animator>(); private static final ArrayList<Animator> sReadyAnims = new ArrayList<Animator>(); /** * Flag that denotes whether the animation is set up and ready to go. Used by seek() to * set up animation that has not yet been started. */ private boolean mInitialized = false; // // Backing variables // Loading Loading @@ -411,6 +424,44 @@ public class Animator extends Animatable { } mPlayingBackwards = false; mCurrentIteration = 0; mInitialized = true; } /** * Sets the position of the animation to the specified point in time. This time should * be between 0 and the total duration of the animation, including any repetition. If * the animation has not yet been started, then it will not advance forward after it is * set to this time; it will simply set the time to this value and perform any appropriate * actions based on that time. If the animation is already running, then seek() will * set the current playing time to this value and continue playing from that point. * * @param playTime The time, in milliseconds, to which the animation is advanced or rewound. */ public void setCurrentPlayTime(long playTime) { if (!mInitialized) { initAnimation(); } long currentTime = AnimationUtils.currentAnimationTimeMillis(); if (mPlayingState != RUNNING) { mSeekTime = playTime; mPlayingState = SEEKED; } mStartTime = currentTime - playTime; animationFrame(currentTime); } /** * Gets the current position of the animation in time, which is equal to the current * time minus the time that the animation started. An animation that is not yet started will * return a value of zero. * * @return The current position in time of the animation. */ public long getCurrentPlayTime() { if (!mInitialized) { return 0; } return AnimationUtils.currentAnimationTimeMillis() - mStartTime; } /** Loading Loading @@ -740,6 +791,7 @@ public class Animator extends Animatable { } public void start() { mPlayingState = STOPPED; sPendingAnimations.add(this); if (sAnimationHandler == null) { sAnimationHandler = new AnimationHandler(); Loading Loading @@ -845,10 +897,17 @@ public class Animator extends Animatable { if (mPlayingState == STOPPED) { mPlayingState = RUNNING; if (mSeekTime < 0) { mStartTime = currentTime; } else { mStartTime = currentTime - mSeekTime; // Now that we're playing, reset the seek time mSeekTime = -1; } } switch (mPlayingState) { case RUNNING: case SEEKED: float fraction = (float)(currentTime - mStartTime) / mDuration; if (fraction >= 1f) { if (mCurrentIteration < mRepeatCount || mRepeatCount == INFINITE) { Loading