Pour vous aider à créer des traits de manière idiomatique avec Compose, l'API Ink fournit des modules d'interopérabilité Compose pour la création, le pinceau et la géométrie.
Pour dessiner un trait dans Compose, utilisez le composable InProgressStrokes qui nécessite une instance de pinceau par défaut, un moyen de remplacer le pinceau par défaut et un rappel qui gère les traits terminés.
Configurer le composant d'UI
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )Gérer les traits terminés
Lorsque les traits humides deviennent secs, ils sont transmis à l'application via l'argument de rappel
onStrokesFinisheddeInProgressStrokes.Votre application doit transmettre les traits terminés à un autre composable du même thread d'UI pour les valider à l'écran.
@Composable fun DrawingScreen( finishedStrokes: List<Strokes>, onStrokesFinished: (List<Stroke>) -> Unit, currentBrush: Brush, onGetNextBrush: () -> Brush, modifier: Modifier = Modifier ) { val canvasStrokeRenderer = remember { CanvasStrokeRenderer.create() } Box(modifier = Modifier.fillMaxSize()) { // The Canvas for drawing the permanent, dry strokes. Canvas(modifier = Modifier.fillMaxSize()) { finishedStrokes.forEach { stroke -> canvasStrokeRenderer.draw( stroke = stroke, canvas = this, strokeToScreenTransform = Matrix() ) } } //The wet ink layer for live drawing. // The InProgressStrokes composable for the wet ink layer goes here. } }