[Compose Sample] Add bitmaps and dummy bitmaps to the sample app
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt index ae7eed8..6339dbf 100644 --- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt +++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt
@@ -20,6 +20,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -29,6 +30,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog +import com.airbnb.lottie.ImageAssetDelegate import com.airbnb.lottie.LottieComposition import com.airbnb.lottie.compose.* import com.airbnb.lottie.sample.compose.BuildConfig @@ -38,6 +40,7 @@ import com.airbnb.lottie.sample.compose.utils.drawBottomBorder import com.airbnb.lottie.sample.compose.utils.maybeBackground import com.airbnb.lottie.sample.compose.utils.maybeDrawBorder +import com.airbnb.lottie.sample.compose.utils.toDummyBitmap import kotlin.math.ceil import kotlin.math.roundToInt @@ -48,7 +51,13 @@ ) { val backPressedDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher val compositionResult = rememberLottieComposition(spec) - val animationState = rememberLottieAnimationState(autoPlay = true, repeatCount = Integer.MAX_VALUE) + val dummyBitmapStrokeWidth = with(LocalDensity.current) { 3.dp.toPx() } + val imageAssetDelegate = remember(compositionResult) { ImageAssetDelegate { it.bitmap ?: it.toDummyBitmap(dummyBitmapStrokeWidth) }} + val animationState = rememberLottieAnimationState( + autoPlay = true, + repeatCount = Integer.MAX_VALUE, + imageAssetDelegate = imageAssetDelegate + ) val scaffoldState = rememberScaffoldState() val outlineMasksAndMattes = remember { mutableStateOf(false) } val applyOpacityToLayers = remember { mutableStateOf(false) }
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/utils/BitmapUtils.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/utils/BitmapUtils.kt new file mode 100644 index 0000000..7deb0bf --- /dev/null +++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/utils/BitmapUtils.kt
@@ -0,0 +1,20 @@ +package com.airbnb.lottie.sample.compose.utils + +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import com.airbnb.lottie.LottieImageAsset + +fun LottieImageAsset.toDummyBitmap(strokeWidth: Float): Bitmap { + val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bitmap) + val paint = Paint() + paint.color = Color.GRAY + paint.style = Paint.Style.STROKE + paint.strokeWidth = strokeWidth + canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), paint) + canvas.drawLine(0f, 0f, width.toFloat(), height.toFloat(), paint) + canvas.drawLine(width.toFloat(), 0f, 0f, height.toFloat(), paint) + return bitmap +} \ No newline at end of file