'Detect when user released fingers from screen after zooming

How can I detect when user stop zooming photo(when he/she released fingers from the screen) and set the initial state of zoomed photo

   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
                    }

Image(
        painter = painter,
        modifier = Modifier
            .pointerInput(Unit) {
                detectDragGestures { change, dragAmount ->
                    if (change.pressed) {
                        scale = 1f
                        rotation = 0f
                        offset = Offset.Zero
                    }
                }
            }
            .graphicsLayer(
                scaleX = scale,
                scaleY = scale
            )
            .transformable(state = state)
            .padding(vertical = 100.dp)
            .fillMaxSize(),
        contentScale = ContentScale.Fit,
        contentDescription = ""
    )


Solution 1:[1]

You can use onDragEnd parameter:

detectDragGestures(
    onDrag = { change, dragAmount ->
        if (change.pressed) {
            scale = 1f
            rotation = 0f
            offset = Offset.Zero
        }
    },
    onDragEnd = {

    },
)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pylyp Dukhov