Separate API for playing/resuming an animation
Fixes #174
diff --git a/LottieSample/src/main/java/com/airbnb/lottie/samples/AnimationFragment.java b/LottieSample/src/main/java/com/airbnb/lottie/samples/AnimationFragment.java
index ca0d1d2..acb6172 100644
--- a/LottieSample/src/main/java/com/airbnb/lottie/samples/AnimationFragment.java
+++ b/LottieSample/src/main/java/com/airbnb/lottie/samples/AnimationFragment.java
@@ -184,7 +184,7 @@
if (animationView.getProgress() == 1f) {
animationView.setProgress(0f);
}
- animationView.playAnimation();
+ animationView.resumeAnimation();
postUpdatePlayButtonText();
}
}
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
index df1d90d..0bc6c36 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
@@ -320,10 +320,18 @@
lottieDrawable.playAnimation();
}
+ public void resumeAnimation() {
+ lottieDrawable.resumeAnimation();
+ }
+
@SuppressWarnings("unused") public void reverseAnimation() {
lottieDrawable.reverseAnimation();
}
+ @SuppressWarnings("unused") public void resumeReverseAnimation() {
+ lottieDrawable.resumeReverseAnimation();
+ }
+
@SuppressWarnings("unused") public void setSpeed(float speed) {
lottieDrawable.setSpeed(speed);
}
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index a4b3bb1..581994f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -226,23 +226,43 @@
return animator.isRunning();
}
- void playAnimation() {
+ @SuppressWarnings("WeakerAccess") public void playAnimation() {
+ playAnimation(false);
+ }
+
+ public void resumeAnimation() {
+ playAnimation(true);
+ }
+
+ private void playAnimation(boolean setStartTime) {
if (layers.isEmpty()) {
playAnimationWhenLayerAdded = true;
reverseAnimationWhenLayerAdded = false;
return;
}
- animator.setCurrentPlayTime((long) (getProgress() * animator.getDuration()));
+ if (setStartTime) {
+ animator.setCurrentPlayTime((long) (getProgress() * animator.getDuration()));
+ }
animator.start();
}
- void reverseAnimation() {
+ @SuppressWarnings("unused") public void resumeReverseAnimation() {
+ reverseAnimation(true);
+ }
+
+ @SuppressWarnings("WeakerAccess") public void reverseAnimation() {
+ reverseAnimation(false);
+ }
+
+ private void reverseAnimation(boolean setStartTime) {
if (layers.isEmpty()) {
playAnimationWhenLayerAdded = false;
reverseAnimationWhenLayerAdded = true;
return;
}
- animator.setCurrentPlayTime((long) (getProgress() * animator.getDuration()));
+ if (setStartTime) {
+ animator.setCurrentPlayTime((long) (getProgress() * animator.getDuration()));
+ }
animator.reverse();
}