Die Ink API ist modular aufgebaut, sodass Sie nur die Funktionen verwenden können, die Sie benötigen.
Striche
Das Modul Strokes bildet die Grundlage der Ink-Bibliothek. Es bietet die primäre API-Schnittstelle und enthält die Hauptdatentypen für die Interaktion mit der Bibliothek. Zu den wichtigsten Datentypen in diesem Modul gehören:
StrokeInputBatch
: Stellt eine Reihe von Zeigereingaben dar, die Position, Zeitstempel und Druck, Neigung und Ausrichtung optional. Diese Daten können mit den KlassenStroke
oderInProgressStroke
verwendet werden und sind die Eingaben für eine Bibliothek zur Handschrifterkennung.Stroke
: ein unveränderliches Darstellung einer endgültigen Kontur mit fester Geometrie. Ein Strich besteht aus einemImmutableStrokeInputBatch
(Eingabepunkte), einemBrush
(Stil) und einerPartitionedMesh
(geometrische Form). Striche können in Ihrer Anwendung gespeichert, manipuliert und gerendert werden.InProgressStroke
: Ein änderbares Gegenstück zuStroke
– entwickelt für inkrementelle Eingabeverarbeitung und Echtzeitrendering während des Zeichnens .InProgressStroke
wird häufig indirekt überInProgressStrokesView
verwendet, kann aber auch direkt für erweiterte Anpassungen genutzt werden.
Geometrie
Modul Geometry bietet eine Reihe von geometrischen Primitiven für einfache und komplexe sowie Operationen zur Erkennung von Schnittpunkten und Transformationen. Diese Primitive lassen sich nahtlos in Zeichenzüge einbinden, sodass Sie Funktionen wie Radiergummis für ganze Striche und Auswahltools erstellen können.
Klassen wie Box
und Vec
ermöglichen hauptsächlich geometrische Vorgänge, PartitionedMesh
kann aber auch renderingspezifische Daten enthalten.
Pinsel
Pinsel-Modul
dient als deklarative Konfiguration für die Erstellung und das Rendering von Strichen.
und funktioniert ähnlich wie eine
Schriftgröße. Ein Brush
-Objekt hat die folgenden Eigenschaften:
- Farbe: Kann eine Volltonfarbe oder die Grundlage für mehrschichtige Effekte und Texturen sein.
- Größe: Kann festgelegt werden oder als Grundlage für dynamische Größenanpassungen dienen.
- Familie: Analog zu einem Textschriftbild definiert „family“ die Gesamtheit des Strichs. Stil.
- Epsilon: Steuert die Detailebene in der Vektorgeometrie des Strichs und stellt die kleinste visuelle Unterscheidungseinheit dar.
Die Eigenschaft epsilon
spielt eine
wichtige Rolle bei der Definition der Genauigkeit
des Koordinatensystems spielen. Weitere Informationen zur Auswahl eines geeigneten Epsilonwerts finden Sie im Abschnitt Brush APIs.
Die BrushFamily
ist eine leistungsstarke Konfiguration, mit der ausdrucksstarke Striche erstellt werden können, ohne sich mit komplexer Geometrie oder Rendering-Code befassen zu müssen. Die Bibliothek bietet eine Reihe vordefinierter StockBrushes
, darunter einen druckempfindlichen Stift, einen Textmarker und einen Filzstift.
Autorentool
Die Authoring
können Entwickler Eingaben durch Berührung erfassen und als
Striche mit niedriger Latenz in Echtzeit auf dem Bildschirm. Dies wird durch die
Klasse InProgressStrokesView
,
die Bewegungsereignisse verarbeitet und die Striche beim Zeichnen visualisiert.
Sobald ein Strich abgeschlossen ist, benachrichtigt das Modul die Clientanwendung über den onStrokesFinished()
-Callback von InProgressStrokesFinishedListener
.
Mithilfe des Callbacks kann die Anwendung
fertigen Strichdaten für das Rendering oder die Speicherung.
Rendering
Das Rendering-Modul vereinfacht das Zeichnen von Tintenstrichen auf einem
Android Canvas
Das Modul
stellt ein CanvasStrokeRenderer
bereit.
für „Schreiben“ und
ViewStrokeRenderer
für ansichtsbasierte Layouts, die beide die Rendering-Leistung optimieren und
hochwertiges Bildmaterial, einschließlich Kantenglättung.
Um Striche in einem Canvas-Element zu rendern, erhalten Sie einen
CanvasStrokeRenderer
Instanz mithilfe der Methode
create()
. Verwenden Sie dann die Methode draw()
, um fertige oder laufende Striche auf einem Canvas zu rendern.
Das Canvas kann im Rahmen der Zeichnung
Um sicherzustellen, dass die Kontur auf dem Bildschirm optimal dargestellt wird,
Transformation, die auf den Canvas angewendet wird, ebenfalls an
CanvasStrokeRenderer#draw()
Um dies zu vermeiden, verwenden Sie
ViewStrokeRenderer
.