Delay setProgress(...) if animation is loading
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
index 00711a2..7056a39 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
@@ -59,9 +59,11 @@
 
     private final LongSparseArray<LayerView> layerMap = new LongSparseArray<>();
     private final RootAnimatableLayer rootAnimatableLayer = new RootAnimatableLayer(this);
+    @FloatRange(from=0f, to=1f) private float progress;
     private String animationName;
     private boolean isScreenshotTest;
     private boolean isAnimationLoading;
+    private boolean setProgressWhenCompositionSet;
     private boolean playAnimationWhenCompositionSet;
     @Nullable private AsyncTask fileToJsonTask;
     @Nullable private AsyncTask jsonToCompositionTask;
@@ -193,6 +195,8 @@
      */
     public void setAnimation(final String animationName) {
         isAnimationLoading = true;
+        setProgressWhenCompositionSet = false;
+        playAnimationWhenCompositionSet = false;
 
         this.animationName = animationName;
 
@@ -295,6 +299,7 @@
 
     private void onAnimationLoadingFail() {
         isAnimationLoading = false;
+        setProgressWhenCompositionSet = false;
         playAnimationWhenCompositionSet = false;
     }
 
@@ -303,8 +308,16 @@
             return;
         }
 
+        isAnimationLoading = false;
+
         clearComposition();
-        setProgress(0f);
+
+        if (setProgressWhenCompositionSet) {
+            setProgressWhenCompositionSet = false;
+            setProgress(progress);
+        } else {
+            setProgress(0f);
+        }
 
         this.composition = composition;
         rootAnimatableLayer.setCompDuration(composition.getDuration());
@@ -313,7 +326,6 @@
         requestLayout();
         setImageDrawable(rootAnimatableLayer);
 
-        isAnimationLoading = false;
         if (playAnimationWhenCompositionSet) {
             playAnimationWhenCompositionSet = false;
             playAnimation();
@@ -405,11 +417,17 @@
     }
 
     public void cancelAnimation() {
+        setProgressWhenCompositionSet = false;
         playAnimationWhenCompositionSet = false;
         rootAnimatableLayer.cancelAnimation();
     }
 
     public void setProgress(@FloatRange(from=0f, to=1f) float progress) {
+        this.progress = progress;
+        if (isAnimationLoading) {
+            setProgressWhenCompositionSet = true;
+            return;
+        }
         rootAnimatableLayer.setProgress(progress);
     }