Module

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 Klassen Stroke oder InProgressStroke 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 einem ImmutableStrokeInputBatch (Eingabepunkte), einem Brush (Stil) und einer PartitionedMesh (geometrische Form). Striche können in Ihrer Anwendung gespeichert, manipuliert und gerendert werden.
  • InProgressStroke: Ein änderbares Gegenstück zu Stroke – entwickelt für inkrementelle Eingabeverarbeitung und Echtzeitrendering während des Zeichnens . InProgressStroke wird häufig indirekt über InProgressStrokesView 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 .