Die Ink API ist modularisiert, sodass Sie nur die Funktionen verwenden können, die Sie benötigen.
Schläge
The strokes module serves as the foundation of the Ink API. Key data types within this module are:
StrokeInputBatch: Represents a series of pointer inputs, including their position, timestamp, and optionally pressure, tilt, and orientation.InProgressStroke: Represents a stroke that is actively being drawn.InProgressStrokeis used to render partial strokes with low latency and to build the finalStrokeonce input is complete, after which the object can be reused.InProgressStrokeis used by theInProgressStrokescomposable.Stroke: An immutable representation of a finalized stroke with fixed geometry. EachStrokehas anImmutableStrokeInputBatch(input points), aBrush(style), and aPartitionedMesh(geometric shape). You can store, manipulate, and render strokes within your application.
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
Das Modul brush definiert den Stil von Strichen. Sie besteht aus zwei Hauptteilen:
Brush: Gibt den Stil eines Strichs an, einschließlich der Grundfarbe, der Grundgröße undBrushFamily.BrushFamilyentspricht einer Schriftfamilie und definiert den Stil eines Strichs. EinBrushFamilykann beispielsweise einen bestimmten Markierungs- oder Highlighterstil darstellen, sodass Striche mit unterschiedlichen Größen und Farben diesen Stil gemeinsam nutzen können.StockBrushes: Stellt Factory-Funktionen zum Erstellen von einsatzbereitenBrushFamily-Instanzen bereit.
Autorentool
The Compose Authoring module lets you capture user touch input and render it
as low-latency strokes on the screen in real time. This is achieved through
the InProgressStrokes composable, which processes motion events and displays
the strokes as they are drawn.
Once a stroke is completed, the composable notifies the client application using
an InProgressStrokesFinishedListener callback. This allows the application
to retrieve the finished strokes for rendering or storage.
In Compose, InProgressStrokes takes this callback in the onStrokesFinished
parameter. Pass the finished strokes to another composable to commit them to the
screen using the rendering module.
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.