Play, not resume, animation when playAnimation() is called when isShown() is false (#1521)

Fixes #1517
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();
   }