Die Ink API ist modularisiert, sodass Sie nur die Funktionen verwenden können, die Sie benötigen.
Schläge
Das Modul strokes bildet die Grundlage der Ink API. Die wichtigsten Datentypen in diesem Modul sind:
StrokeInputBatch: Eine Reihe von Zeigereingaben, einschließlich ihrer Position, ihres Zeitstempels und optional ihres Drucks, ihrer Neigung und ihrer Ausrichtung.InProgressStroke: Stellt einen Strich dar, der gerade gezeichnet wird.InProgressStrokewird verwendet, um Teilstriche mit geringer Latenz zu rendern und das endgültigeStrokezu erstellen, sobald die Eingabe abgeschlossen ist. Danach kann das Objekt wiederverwendet werden.InProgressStrokewird von der zusammensetzbaren FunktionInProgressStrokesverwendet.Stroke: Eine unveränderliche Darstellung eines abgeschlossenen Strichs mit fester Geometrie. JedesStrokehat einImmutableStrokeInputBatch(Eingabepunkte), einBrush(Stil) und einePartitionedMesh(geometrische Form). Sie können Striche in Ihrer Anwendung speichern, bearbeiten und rendern.
Geometrie
The Geometry module supports geometric operations on primitive shapes (using dedicated classes like Box and Vec), as well as arbitrary shapes (using PartitionedMesh), including intersection detection and transformation. PartitionedMesh can also hold additional data to support rendering.
Pinsel
The brush module defines the style of strokes. It
consists of two main parts:
Brush: Specifies the style of a stroke including base color, base size, andBrushFamily.BrushFamilyis analogous to a font family, it defines a stroke's style. For example, aBrushFamilycan represent a specific style of marker or highlighter, allowing strokes with different sizes and colors to share that style.StockBrushes: Provides factory functions for creating ready-to-useBrushFamilyinstances.
Autorentool
Mit dem Compose-Modul Authoring können Sie Touch-Eingaben von Nutzern erfassen und in Echtzeit als Striche mit geringer Latenz auf dem Bildschirm rendern. Dies wird durch die kombinierbare Funktion InProgressStrokes erreicht, die Bewegungsereignisse verarbeitet und die Striche beim Zeichnen anzeigt.
Sobald ein Strich abgeschlossen ist, benachrichtigt die Composable die Clientanwendung über einen InProgressStrokesFinishedListener-Callback. So kann die Anwendung die fertigen Striche zum Rendern oder Speichern abrufen.
In Compose wird dieser Callback im Parameter onStrokesFinished von InProgressStrokes übergeben. Übergeben Sie die fertigen Striche an eine andere zusammensetzbare Funktion, um sie mit dem Rendering-Modul auf dem Bildschirm darzustellen.
Rendering
Das Rendering-Modul vereinfacht das Zeichnen von Tinte auf einem Android-Canvas.
Es bietet CanvasStrokeRenderer für Compose und ViewStrokeRenderer für auf Views basierende Layouts. Diese Renderer optimieren die Rendering-Leistung und sorgen für hochwertige Grafiken, einschließlich Antialiasing.
Rufen Sie zum Rendern von Strichen die Methode create() auf, um eine CanvasStrokeRenderer-Instanz abzurufen, und rufen Sie dann die Methode draw() auf, um entweder fertige (Stroke) oder laufende (InProgressStroke) Striche auf einem Canvas zu rendern.
Sie können die Arbeitsfläche transformieren, während Sie einen Strich zeichnen. Beispiele hierfür sind Schwenken, Zoomen und Drehen. Damit der Strich richtig gerendert wird, müssen Sie auch die canvas-Transformation an CanvasStrokeRenderer.draw übergeben.
Wenn Sie die canvas-Transformation nicht separat erfassen möchten, verwenden Sie stattdessen ViewStrokeRenderer.
Speicher
Das storage-Modul bietet Dienstprogramme zum effizienten Serialisieren und Deserialisieren von Strichdaten, wobei der Schwerpunkt hauptsächlich auf StrokeInputBatch liegt.
Das Modul verwendet Protocol Buffers und optimierte Delta-Komprimierungstechniken, was im Vergleich zu einfachen Methoden zu erheblichen Speicherplatzeinsparungen führt.
Das Speichermodul vereinfacht das Speichern, Laden und Teilen von Strichen.