Play animation when played when not shown
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java index fd1c95d..1404f00 100644 --- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java +++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
@@ -98,8 +98,11 @@ private boolean isInitialized; private String animationName; private @RawRes int animationResId; + + private boolean playAnimationWhenShown = false; private boolean wasAnimatingWhenNotShown = false; private boolean wasAnimatingWhenDetached = false; + private boolean autoPlay = false; private boolean cacheComposition = true; private RenderMode renderMode = RenderMode.AUTOMATIC; @@ -299,8 +302,11 @@ if (isShown()) { if (wasAnimatingWhenNotShown) { resumeAnimation(); - wasAnimatingWhenNotShown = false; + } else if (playAnimationWhenShown) { + playAnimation(); } + wasAnimatingWhenNotShown = false; + playAnimationWhenShown = false; } else { if (isAnimating()) { pauseAnimation(); @@ -543,7 +549,7 @@ lottieDrawable.playAnimation(); enableOrDisableHardwareLayer(); } else { - wasAnimatingWhenNotShown = true; + playAnimationWhenShown = true; } } @@ -557,6 +563,7 @@ lottieDrawable.resumeAnimation(); enableOrDisableHardwareLayer(); } else { + playAnimationWhenShown = false; wasAnimatingWhenNotShown = true; } } @@ -895,7 +902,9 @@ @MainThread public void cancelAnimation() { + wasAnimatingWhenDetached = false; wasAnimatingWhenNotShown = false; + playAnimationWhenShown = false; lottieDrawable.cancelAnimation(); enableOrDisableHardwareLayer(); } @@ -905,6 +914,7 @@ autoPlay = false; wasAnimatingWhenDetached = false; wasAnimatingWhenNotShown = false; + playAnimationWhenShown = false; lottieDrawable.pauseAnimation(); enableOrDisableHardwareLayer(); }