android - 在 jetpack compose 中设置平移限制
问题描述
我在尝试使用 jetpack compose 实现平移手势时遇到了困难。我的要求是平移手势不要将加载的图像移出其原始边界。那可能吗?
@Composable
fun ZoomableImage() {
val bitmapBytes = viewModel.page.observeAsState()
val bitmap = bitmapBytes.value?.let {
BitmapFactory.decodeByteArray(
bitmapBytes.value, 0,
it.size
)
}
if (bitmap != null) {
var scale by remember { mutableStateOf(1f) }
var offsetX by remember { mutableStateOf(0f) }
var offsetY by remember { mutableStateOf(0f) }
Image(
modifier = Modifier
.scale(maxOf(1f, scale))
.absoluteOffset {
IntOffset(offsetX.roundToInt(), offsetY.roundToInt())
}
.pointerInput(Unit) {
detectTransformGestures(
onGesture = { _, pan, gestureZoom, _ ->
scale *= gestureZoom
offsetX += pan.x
offsetY += pan.y
}
)
}
.fillMaxSize(),
bitmap = bitmap.asImageBitmap(),
contentDescription = null
)
}
}
解决方案
推荐阅读
- python - Django - 覆盖/替换来自第 3 部分站点包的导入
- jquery - 使用 AJAX 的 JSON 响应数据表无效
- android - 如何在 Instagram 等键盘上方获取表情符号快捷栏?
- python - Python中自定义异常的奇怪行为
- javascript - 创建多个模式时遇到问题
- java - 如果我们在分区内使用多个消息流(createMessageStreams),我们如何在 kafka 消费者中实现排序
- php - 如何使用 PHP 在 Highcharts 柱形图中显示日期和日期
- flutter - 在 Flutter 中显示图像表单库或来自网络的同一视图
- qt - Qt Qml 源代码格式化不需要的行为
- android - 如何避免使用 zip4j lib 多次提取相同的文件?