Apply left/top bounds before scaling (#2565)
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index f9bc737..9c2f424 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -1745,8 +1745,8 @@
float scaleX = bounds.width() / (float) composition.getBounds().width();
float scaleY = bounds.height() / (float) composition.getBounds().height();
- renderingMatrix.preScale(scaleX, scaleY);
renderingMatrix.preTranslate(bounds.left, bounds.top);
+ renderingMatrix.preScale(scaleX, scaleY);
}
compositionLayer.draw(canvas, renderingMatrix, alpha, null);
}
diff --git a/snapshot-tests/src/androidTest/java/com/airbnb/lottie/snapshots/tests/SeekBarTestCase.kt b/snapshot-tests/src/androidTest/java/com/airbnb/lottie/snapshots/tests/SeekBarTestCase.kt
index 4be13fa..f24ea26 100644
--- a/snapshot-tests/src/androidTest/java/com/airbnb/lottie/snapshots/tests/SeekBarTestCase.kt
+++ b/snapshot-tests/src/androidTest/java/com/airbnb/lottie/snapshots/tests/SeekBarTestCase.kt
@@ -28,7 +28,26 @@
val canvas = Canvas(bitmap)
binding.root.draw(canvas)
snapshotter.record(bitmap, "SeekBar", "ThumbDrawable")
+
+ val compositionForScale = LottieCompositionFactory.fromAssetSync(context, "Tests/Thumb.json").value!!
+ val scaleDrawable = object : LottieDrawable() {
+ override fun getIntrinsicWidth(): Int {
+ return compositionForScale.unscaledWidth * 2
+ }
+
+ override fun getIntrinsicHeight(): Int {
+ return compositionForScale.unscaledHeight * 2
+ }
+ }
+ scaleDrawable.composition = compositionForScale
+ binding.seekBar.thumb = scaleDrawable
+ val bitmapForScale = bitmapPool.acquire(binding.root.measuredWidth, binding.root.measuredHeight)
+ val canvasForScale = Canvas(bitmapForScale)
+ binding.root.draw(canvasForScale)
+ snapshotter.record(bitmapForScale, "SeekBar", "ScaleThumbDrawable")
+
LottieCompositionCache.getInstance().clear()
bitmapPool.release(bitmap)
+ bitmapPool.release(bitmapForScale)
}
-}
\ No newline at end of file
+}