Gestes multipoint : panoramique, zoom, rotation

Le modificateur transformable permet de détecter les gestes multipoint utilisés pour le panoramique, le zoom et la rotation. Il ne transforme pas les éléments, il détecte simplement les gestes.

@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()
    )
}

Élément d'interface utilisateur réagissant aux gestes multipoint (panoramique, zoom et rotation)

Si vous devez combiner le zoom, le panoramique et la rotation avec d'autres gestes, vous pouvez utiliser le détecteur PointerInputScope.detectTransformGestures.