多點觸控:平移、縮放、旋轉

如要偵測平移、縮放及旋轉的多點觸控手勢,您可以使用 transformable 修飾符。這個修飾符本身不會轉換元素,只會偵測手勢。

@Composable
private fun TransformableSample() {
    // set up all transformation states
    var scale by remember { mutableStateOf(1f) }
    var rotation by remember { mutableStateOf(0f) }
    var offset by remember { mutableStateOf(Offset.Zero) }
    val state = rememberTransformableState { zoomChange, offsetChange, rotationChange ->
        scale *= zoomChange
        rotation += rotationChange
        offset += offsetChange
    }
    Box(
        Modifier
            // apply other transformations like rotation and zoom
            // on the pizza slice emoji
            .graphicsLayer(
                scaleX = scale,
                scaleY = scale,
                rotationZ = rotation,
                translationX = offset.x,
                translationY = offset.y
            )
            // add transformable to listen to multitouch transformation events
            // after offset
            .transformable(state = state)
            .background(Color.Blue)
            .fillMaxSize()
    )
}

回應多點觸控手勢 (平移、縮放和旋轉) 的 UI 元素

如果您需要將縮放、平移和旋轉與其他手勢合併,可以使用 PointerInputScope.detectTransformGestures 偵測工具。

  • 注意:系統會在 JavaScript 關閉時顯示連結文字
  • 瞭解手勢