Aby ułatwić tworzenie pociągnięć w idiomatyczny sposób w Compose, interfejs Ink API udostępnia moduły interoperacyjności Compose do tworzenia, pędzla i geometrii.
Aby narysować linię w Compose, użyj funkcji kompozycyjnej InProgressStrokes, która wymaga domyślnej instancji pędzla, sposobu zastąpienia domyślnego pędzla i wywołania zwrotnego, które obsługuje ukończone linie.
Konfigurowanie komponentu interfejsu
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )Obsługa ukończonych kresek
Gdy mokre pociągnięcia wyschną, są przekazywane do aplikacji za pomocą argumentu wywołania zwrotnego
onStrokesFinishedfunkcjiInProgressStrokes.Aby zatwierdzić pociągnięcia i wyświetlić je na ekranie, aplikacja musi przekazać je do innego komponentu w tym samym wątku interfejsu.
@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. } }