[Sample] Fixed a few bugs in the sample app (#1674)
Fixes #1671
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java b/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
index 2c8f1d0..dc0961c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
@@ -58,4 +58,11 @@
public void setBitmap(@Nullable Bitmap bitmap) {
this.bitmap = bitmap;
}
+
+ /**
+ * Returns whether this asset has an embedded Bitmap or whether the fileName is a base64 encoded bitmap.
+ */
+ public boolean hasBitmap() {
+ return bitmap != null || (fileName.startsWith("data:") && fileName.indexOf("base64,") > 0);
+ }
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index 944382d..d0036f4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -429,6 +429,11 @@
private fun onCompositionLoaded(composition: LottieComposition?) {
composition ?: return
+ // If the composition is missing any images, return the original image or null.
+ if (composition.images.any { (_, asset) -> !asset.hasBitmap() }) {
+ binding.animationView.setImageAssetDelegate { it.bitmap }
+ }
+
binding.animationView.setComposition(composition)
binding.controlBar.hardwareAccelerationToggle.isActivated = binding.animationView.layerType == View.LAYER_TYPE_HARDWARE
binding.animationView.setPerformanceTrackingEnabled(true)
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
index 8192d95..c34dbc0 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
@@ -3,6 +3,7 @@
import android.annotation.SuppressLint
import android.net.Uri
import android.os.Parcelable
+import kotlinx.android.parcel.IgnoredOnParcel
import kotlinx.android.parcel.Parcelize
@SuppressLint("ParcelCreator")
@@ -14,4 +15,7 @@
val asset: String? = null,
val animationData: AnimationData? = null,
val animationDataV2: AnimationDataV2? = null
-) : Parcelable
\ No newline at end of file
+) : Parcelable {
+ @IgnoredOnParcel
+ val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
+}
\ No newline at end of file
diff --git a/sample/src/main/res/layout/bullseye_activity.xml b/sample/src/main/res/layout/bullseye_activity.xml
index fb3d062..331b01b 100644
--- a/sample/src/main/res/layout/bullseye_activity.xml
+++ b/sample/src/main/res/layout/bullseye_activity.xml
@@ -9,7 +9,7 @@
android:id="@+id/animationView"
android:layout_width="256dp"
android:layout_height="256dp"
- app:lottie_url="https://raw.githubusercontent.com/airbnb/lottie-android/master/LottieSample/src/main/res/raw/bullseye.json"
+ app:lottie_rawRes="@raw/bullseye"
app:lottie_autoPlay="true"
app:lottie_loop="true"
android:layout_gravity="center"/>