Reset LottieDrawable when setting the same composition a second time
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
index 4240035..ca8d13b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
@@ -553,6 +553,10 @@
       // We can avoid re-setting the drawable, and invalidating the view, since the composition
       // hasn't changed.
       return;
+    } else if (!isNewComposition) {
+      // The current drawable isn't lottieDrawable but the drawable already has the right composition.
+      setImageDrawable(null);
+      setImageDrawable(lottieDrawable);
     }
 
     // This is needed to makes sure that the animation is properly played/paused for the current visibility state.
diff --git a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
index 976bc4a..a10e4a7 100644
--- a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
+++ b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
@@ -1,7 +1,11 @@
 package com.airbnb.lottie.samples
 
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
 import androidx.fragment.app.Fragment
+import androidx.fragment.app.testing.FragmentScenario
 import androidx.fragment.app.testing.launchFragmentInContainer
+import androidx.lifecycle.Lifecycle
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.assertion.ViewAssertions.matches
 import androidx.test.espresso.matcher.ViewMatchers
@@ -9,6 +13,10 @@
 import androidx.test.espresso.matcher.ViewMatchers.withId
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import com.airbnb.lottie.LottieAnimationView
+import com.airbnb.lottie.LottieCompositionFactory
+import com.airbnb.lottie.LottieDrawable
+import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 
@@ -21,4 +29,21 @@
         launchFragmentInContainer<TestFragment>()
         onView(withId(R.id.animation_view)).check(matches(isDisplayed()))
     }
+
+    @Test
+    fun testCanSetAnAnimationAndChangeItBack() {
+        class TestFragment : Fragment(R.layout.lottie_activity_main)
+        val scenario = launchFragmentInContainer<TestFragment>()
+        scenario.moveToState(Lifecycle.State.RESUMED)
+        scenario.onFragment { fragment ->
+            val composition = LottieCompositionFactory.fromRawResSync(fragment.requireContext(), R.raw.hamburger_arrow).value!!
+            val view = fragment.requireView().findViewById<LottieAnimationView>(R.id.animation_view)
+            view.setComposition(composition)
+            assertTrue(view.drawable is LottieDrawable)
+            view.setImageDrawable(ColorDrawable(Color.GREEN))
+            assertTrue(view.drawable is ColorDrawable)
+            view.setComposition(composition)
+            assertTrue(view.drawable is LottieDrawable)
+        }
+    }
 }