Use size
diff --git a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt b/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt
index bb7a84c..679a6ef 100644
--- a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt
+++ b/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt
@@ -4,6 +4,7 @@
import androidx.annotation.FloatRange
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -17,8 +18,10 @@
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.layout.ScaleFactor
import androidx.compose.ui.unit.IntSize
+import androidx.compose.ui.unit.dp
import com.airbnb.lottie.LottieComposition
import com.airbnb.lottie.LottieDrawable
+import com.airbnb.lottie.utils.Utils
import kotlin.math.roundToInt
/**
@@ -73,9 +76,10 @@
if (composition == null || composition.duration == 0f) return Box(modifier)
+
Canvas(
modifier = modifier
- .lottieLayout(composition)
+ .size((composition.bounds.width() / Utils.dpScale()).dp, (composition.bounds.height() / Utils.dpScale()).dp)
) {
drawIntoCanvas { canvas ->
val compositionSize = Size(composition.bounds.width().toFloat(), composition.bounds.height().toFloat())
diff --git a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimationLayoutModifier.kt b/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimationLayoutModifier.kt
deleted file mode 100644
index c5d326d..0000000
--- a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimationLayoutModifier.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.airbnb.lottie.compose
-
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.layout.LayoutModifier
-import androidx.compose.ui.layout.Measurable
-import androidx.compose.ui.layout.MeasureResult
-import androidx.compose.ui.layout.MeasureScope
-import androidx.compose.ui.unit.Constraints
-import androidx.compose.ui.unit.constrainHeight
-import androidx.compose.ui.unit.constrainWidth
-import com.airbnb.lottie.LottieComposition
-
-internal fun Modifier.lottieLayout(
- composition: LottieComposition,
-): Modifier {
- return this.then(LottieAnimationLayoutModifier(composition))
-}
-
-private class LottieAnimationLayoutModifier(
- private val composition: LottieComposition,
-) : LayoutModifier {
- override fun MeasureScope.measure(measurable: Measurable, constraints: Constraints): MeasureResult {
- val wrappedConstraints = modifyConstraints(constraints)
- val placeable = measurable.measure(wrappedConstraints)
- return layout(placeable.width, placeable.height) {
- placeable.placeRelative(0, 0)
- }
- }
-
- /**
- * If there is a fixed size on either the width or height, use that.
- * If there is not, use the composition size but constraint it to the constraints.
- */
- private fun modifyConstraints(constraints: Constraints): Constraints {
- val width = when {
- constraints.hasFixedWidth -> constraints.maxWidth
- else -> constraints.constrainWidth(composition.bounds.width())
- }
- val height = when {
- constraints.hasFixedHeight -> constraints.maxHeight
- else -> constraints.constrainHeight(composition.bounds.height())
- }
- return Constraints(
- minWidth = width,
- maxWidth = width,
- minHeight = height,
- maxHeight = height,
- )
- }
-}
\ No newline at end of file