Module

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. InProgressStroke wird verwendet, um Teilstriche mit geringer Latenz zu rendern und das endgültige Stroke zu erstellen, sobald die Eingabe abgeschlossen ist. Danach kann das Objekt wiederverwendet werden. InProgressStroke wird von der zusammensetzbaren Funktion InProgressStrokes verwendet.
  • Stroke: Eine unveränderliche Darstellung eines abgeschlossenen Strichs mit fester Geometrie. Jedes Stroke hat ein ImmutableStrokeInputBatch (Eingabepunkte), ein Brush (Stil) und eine PartitionedMesh (geometrische Form). Sie können Striche in Ihrer Anwendung speichern, bearbeiten und rendern.

Geometrie

Das Modul Geometry unterstützt geometrische Operationen für primitive Formen (mit speziellen Klassen wie Box und Vec) sowie beliebige Formen (mit PartitionedMesh), einschließlich der Erkennung von Überschneidungen und Transformationen. PartitionedMesh kann auch zusätzliche Daten für das Rendern enthalten.

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 und BrushFamily. BrushFamily entspricht einer Schriftfamilie und definiert den Stil eines Strichs. Ein BrushFamily kann 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 einsatzbereiten BrushFamily-Instanzen bereit.

Autorentool

借助 Compose 创作模块,您可以捕获用户触摸输入,并将其实时呈现为屏幕上的低延迟笔画。这是通过 InProgressStrokes 可组合项实现的,该可组合项可处理运动事件并在绘制笔画时显示笔画。

笔画完成后,可组合项会使用 InProgressStrokesFinishedListener 回调通知客户端应用。这允许应用检索完成的笔画以进行渲染或存储。

在 Compose 中,InProgressStrokes 通过 onStrokesFinished 参数接收此回调。将完成的笔画传递给另一个可组合项,以使用渲染模块将其提交到屏幕。

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.