android - 如何在jetpack compose中实现图像的缩放和平移
问题描述
我有一个可组合的图像,我希望用户能够放大图像的一部分。例如,如果捏在图像的左下角并放大到左下角而不是图像的中心。放大后,如果用一根手指,就可以在图像周围平移。
在我当前的代码中,我有放大和缩小逻辑,但无论图像在哪里被挤压,它都默认为图像的中心并且放大时图像没有平移逻辑。
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
}
}
}
)
所以我想实现两件事:
- 能够缩放它实际被捏的位置(不是图像的中心)
- 放大时,可以平移图像
我已经尝试从其他堆栈溢出答案中实现多个解决方案,但它们似乎不起作用。
解决方案
目前无法使用 compose 执行此操作。
但是,我建议您与TouchImageView互操作或使用AndroidView
可组合的类似方法。
推荐阅读
- css - Flexbox - 将位于不同行的两个项目居中
- android - 由于 kotlin,Android 中的 Gradle 同步失败
- html - 标题正在消失并且对 CSS 更改没有反应
- django - Django - 如何在 Ubuntu 16.04 中重新加载 uwsgi
- node.js - Node JS Cluster同时使用4核cpu
- java - 膨胀类 android.support.design.widget.BottomNavigationView 时出错
- express - 如何通过使源代码对人类不可读来保护 Express 应用程序?
- windows - schtasks.exe:任务计划程序无法从 XML 创建任务
- laravel - 如何在 Laravel 5 中通过急切加载仅检索一条记录?
- visual-studio-code - 键盘访问 Visual Studio Code 状态栏