我有一个图像合成,我希望用户能够放大到图像的一部分。例如,如果在图像的左下角收缩,则放大左下角区域而不是图像的中心。当放大时,如果一个手指可以在图像周围平移。
在我现在的代码中,我有缩放逻辑,但它默认为图像的中心,无论图像在哪里被捏,并且在放大时没有平移逻辑。
Image(
painter = painterResource(id = R.drawable.sample_image),
contentDescription = "some description here",
modifier = Modifier
.graphicsLayer(
scaleX = scale.value,
scaleY = scale.value
)
.pointerInput(Unit) {
detectTransformGestures { _, _, zoom, _ ->
scale.value = when {
scale.value < 0.5f -> 0.5f
scale.value > 3f -> 3f
else -> scale.value * zoom
}
}
}
)
所以我想实现两件事:
1.能够缩放实际被捏住的位置(而不是图像的中心)
1.放大时,能够在图像周围平移
我试过从其他堆栈溢出的答案实现多个解决方案,但他们似乎不工作。
3条答案
按热度按时间mspsb9vt1#
目前还无法使用compose实现这一点。
但是我建议你使用
AndroidView
composable与TouchImageView或类似的设备进行互操作。hfsqlsce2#
允许平移的部分解决方案可以像这样实现:
(来源:ComposeZoomableImage)
vsaztqbk3#
罗伯托·莱纳尔迪的回答有一点变化。我在代码中设置了一个限制,以便图像不会超出容器。