Function

movable

Configures this subspace element to be interactive and movable.

BasicMovableSample

/** A sample demonstrating a simple movable component. */
@Sampled
@SubspaceComposable
@Composable
public fun BasicMovableSample() {
    SpatialPanel(
        modifier = SubspaceModifier.movable(enabled = true, movePolicy = MovePolicy.system())
    ) {
        Text("The user can move me around!")
    }
}

/** A sample demonstrating a custom movable component. */

CustomMovableSample

@Sampled
@SubspaceComposable
@Composable
public fun CustomMovableSample() {
    var offsetX by remember { mutableStateOf(0.dp) }
    var offsetY by remember { mutableStateOf(0.dp) }
    var offsetZ by remember { mutableStateOf(0.dp) }
    var rotation by remember { mutableStateOf(Quaternion.Identity) }
    val density = LocalDensity.current
    val customMovement: (SpatialMoveEvent) -> Unit = { moveEvent ->
        offsetX = with(density) { moveEvent.pose.translation.x.toDp() }
        offsetY = with(density) { moveEvent.pose.translation.y.toDp() }
        offsetZ = with(density) { moveEvent.pose.translation.z.toDp() }
        rotation = moveEvent.pose.rotation
    }
    SpatialPanel(
        modifier =
            SubspaceModifier.movable(
                    enabled = true,
                    movePolicy = MovePolicy.custom(onMove = customMovement),
                )
                .offset(x = offsetX, y = offsetY, z = offsetZ)
                .rotate(rotation)
    ) {
        Text("The user can move me around!")
    }
}
Jetpack Compose beyond MaterialFree components, screens and templates for apps that don’t look like Google’s. Copy them into your app, or let your coding agent add them.Browse for free

Content updated: