android 如何在Jetpack组合中移动画布周围的矩形?

mklgxw1f  于 2023-03-16  发布在  Android
关注(0)|答案(1)|浏览(128)

我有一个带有矩形的画布,我希望能够移动它。使用Composable,我知道如何使用拖拽修饰符,如下所述:https://developer.android.com/jetpack/compose/gestures#dragging
但是我的画布矩形没有修饰符:

Canvas(modifier = Modifier.fillMaxSize()) {
        drawRect(Color.Blue, topLeft = Offset(0f, 0f), size = Size(this.size.width, 55f))

那么我该如何拖动它呢?有没有一种方法可以使用Compose,或者使用原生画布的原生方式更好?

pu82cl6c

pu82cl6c1#

使用1.0.0-beta04,您可以使用Canvas中的**pointerInput修改器,通过detectDragGestures**函数控制拖动手势,保存Offset并将其应用于drawRecttopLeft参数中。

var offsetX by remember { mutableStateOf(0f) }
var offsetY by remember { mutableStateOf(0f) }

Canvas(modifier = Modifier.fillMaxSize()
        .pointerInput(Unit) {
            detectDragGestures { change, dragAmount ->
                change.consumeAllChanges()
                offsetX += dragAmount.x
                offsetY += dragAmount.y
            }
        }
    ){
    val canvasQuadrantSize = size / 2F
    drawRect(
        topLeft = Offset(offsetX,offsetY),
        color = Color.Green,
        size = canvasQuadrantSize
    )
}

相关问题