L'API Ink è modulare, quindi puoi utilizzare solo ciò che ti serve.
Bracciate
Il modulo tratti funge da base dell'API Ink. I tipi di dati chiave all'interno di questo modulo sono:
StrokeInputBatch: rappresenta una serie di input del puntatore, inclusi posizione, timestamp e, facoltativamente, pressione, inclinazione e orientamento.InProgressStroke: Rappresenta un tratto in fase di disegno.InProgressStrokeviene utilizzato per eseguire il rendering di tratti parziali con bassa latenza e per creare ilStrokefinale una volta completato l'input, dopodiché l'oggetto può essere riutilizzato.InProgressStrokeè utilizzato dal componibileInProgressStrokes.Stroke: una rappresentazione immutabile di un tratto finalizzato con geometria fissa. OgniStrokeha unImmutableStrokeInputBatch(punti di input), unoBrush(stile) e unaPartitionedMesh(forma geometrica). Puoi archiviare, manipolare e visualizzare i tratti all'interno dell'applicazione.
Geometria
Il modulo Geometry supporta operazioni geometriche su forme primitive (utilizzando classi dedicate come Box e Vec), nonché forme arbitrarie (utilizzando PartitionedMesh), tra cui il rilevamento e la trasformazione delle intersezioni. PartitionedMesh può contenere anche dati aggiuntivi per supportare il rendering.
Pennello
Il modulo brush definisce lo stile dei tratti. È
costituito da due parti principali:
Brush: specifica lo stile di un tratto, inclusi colore di base, dimensione di base eBrushFamily.BrushFamilyè analogo a una famiglia di caratteri e definisce lo stile di un tratto. Ad esempio, unBrushFamilypuò rappresentare uno stile specifico di pennarello o evidenziatore, consentendo a tratti di dimensioni e colori diversi di condividere lo stesso stile.StockBrushes: fornisce funzioni di fabbrica per la creazione di istanzeBrushFamilypronte all'uso.
Authoring
借助 Compose 创作模块,您可以捕获用户触摸输入,并将其实时呈现为屏幕上的低延迟笔画。这是通过 InProgressStrokes 可组合项实现的,该可组合项可处理运动事件并在绘制笔画时显示笔画。
笔画完成后,可组合项会使用 InProgressStrokesFinishedListener 回调通知客户端应用。这允许应用检索完成的笔画以进行渲染或存储。
在 Compose 中,InProgressStrokes 通过 onStrokesFinished 参数接收此回调。将完成的笔画传递给另一个可组合项,以使用渲染模块将其提交到屏幕。
Rendering
Il modulo Rendering semplifica il disegno di tratti di inchiostro su un Canvas Android.
Fornisce CanvasStrokeRenderer per Compose e
ViewStrokeRenderer per i layout basati sulle visualizzazioni. Questi
renderer ottimizzano le prestazioni di rendering e contribuiscono a fornire immagini di alta qualità,
incluso l'antialiasing.
Per eseguire il rendering dei tratti, chiama il metodo create() per ottenere un'istanza CanvasStrokeRenderer, quindi chiama il metodo draw() per eseguire il rendering dei tratti finiti (Stroke) o in corso (InProgressStroke) su un Canvas.
Puoi trasformare il canvas quando disegni un tratto. Alcuni esempi includono panoramica,
zoom e rotazione. Per eseguire il rendering del tratto correttamente, devi anche passare la
trasformazione canvas a CanvasStrokeRenderer.draw.
Per evitare di monitorare separatamente la trasformazione canvas, utilizza
ViewStrokeRenderer.
Spazio di archiviazione
Il modulo storage fornisce utilità per
serializzare e deserializzare in modo efficiente i dati dei tratti, concentrandosi principalmente
su StrokeInputBatch.
Il modulo utilizza protocol buffers e tecniche di compressione delta ottimizzate, con un conseguente risparmio significativo dello spazio di archiviazione rispetto ai metodi semplici.
Il modulo di archiviazione semplifica il salvataggio, il caricamento e la condivisione dei tratti.