diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/FrameBasedAnimationDriver.java b/ReactAndroid/src/main/java/com/facebook/react/animated/FrameBasedAnimationDriver.java index d243fd8f45c940..f8fca1f9d22921 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/FrameBasedAnimationDriver.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/FrameBasedAnimationDriver.java @@ -52,7 +52,10 @@ public void resetConfig(ReadableMap config) { public void runAnimationStep(long frameTimeNanos) { if (mStartFrameTimeNanos < 0) { mStartFrameTimeNanos = frameTimeNanos; - mFromValue = mAnimatedValue.mValue; + if (mCurrentLoop == 1) { + // initiate start value when animation runs for the first time + mFromValue = mAnimatedValue.mValue; + } } long timeFromStartMillis = (frameTimeNanos - mStartFrameTimeNanos) / 1000000; int frameIndex = (int) Math.round(timeFromStartMillis / FRAME_TIME_MILLIS); @@ -66,7 +69,7 @@ public void runAnimationStep(long frameTimeNanos) { if (frameIndex >= mFrames.length - 1) { nextValue = mToValue; if (mIterations == -1 || mCurrentLoop < mIterations) { // looping animation, return to start - mStartFrameTimeNanos = frameTimeNanos + ((long) FRAME_TIME_MILLIS) * 1000000L; + mStartFrameTimeNanos = -1; mCurrentLoop++; } else { // animation has completed, no more frames left mHasFinished = true;