Skip to content

Commit

Permalink
Correct animation speed if it was reversed due to repeatMode REVERSE
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabriel Peal committed Apr 8, 2018
1 parent 458b37b commit 2e80ad9
Showing 1 changed file with 14 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class LottieValueAnimator extends BaseLottieAnimator implements Choreogra


private float speed = 1f;
private boolean speedReversedForRepeatMode = false;
private long lastFrameTimeNs = 0;
private float frame = 0;
private int repeatCount = 0;
Expand Down Expand Up @@ -101,6 +102,7 @@ public float getFrame() {
notifyRepeat();
repeatCount++;
if (getRepeatMode() == REVERSE) {
speedReversedForRepeatMode = !speedReversedForRepeatMode;
reverseAnimationSpeed();
} else {
frame = isReversed() ? getMaxFrame() : getMinFrame();
Expand Down Expand Up @@ -163,10 +165,21 @@ public void setSpeed(float speed) {
this.speed = speed;
}

/**
* Returns the current speed. This will be affected by repeat mode REVERSE.
*/
public float getSpeed() {
return speed;
}

@Override public void setRepeatMode(int value) {
super.setRepeatMode(value);
if (value != REVERSE && speedReversedForRepeatMode) {
speedReversedForRepeatMode = false;
reverseAnimationSpeed();
}
}

public void playAnimation() {
notifyStart(isReversed());
setFrame((int) (isReversed() ? getMaxFrame() : getMinFrame()));
Expand Down Expand Up @@ -200,7 +213,7 @@ public void resumeAnimation() {
}

private boolean isReversed() {
return speed < 0;
return getSpeed() < 0;
}

public float getMinFrame() {
Expand Down

0 comments on commit 2e80ad9

Please sign in to comment.