L'API Ink è modularizzata, quindi puoi utilizzare solo ciò che ti serve.
Tratti
Il modulo Strokes costituisce la base della libreria Ink, in quanto offre l'interfaccia API principale e contiene i tipi di dati di base per interagire con la libreria. I principali tipi di dati all'interno di questo modulo includono:
StrokeInputBatch
: rappresenta una serie di input del cursore, che include posizione, timestamp e, facoltativamente, pressione, inclinazione e orientamento. Questi dati possono essere utilizzati con le classiStroke
oInProgressStroke
e sono del tipo che fornisce gli input per una libreria di riconoscimento della scrittura a mano.Stroke
: una rappresentazione immutabile di un tratto finalizzato con geometria fissa. La traccia è composta da unImmutableStrokeInputBatch
(punti di input), unBrush
(stile) e unPartitionedMesh
(forma geometrica). I tratti possono essere archiviati, manipolati e visualizzati al suo interno la tua applicazione.InProgressStroke
: una controparte mutabile diStroke
progettata per la gestione incrementale dell'input e il rendering in tempo reale durante il processo di disegno. Sebbene spesso utilizzato indirettamente tramiteInProgressStrokesView
,InProgressStroke
può essere utilizzato direttamente per la personalizzazione avanzata.
Geometria
Il modulo Geometry fornisce una serie di primitive geometriche per le risorse di base e complesse forme insieme alle operazioni per il rilevamento delle intersezioni e le trasformazioni. Queste primitive si integrano perfettamente con i tratti di inchiostro, consentendoti di creare funzionalità come gomme da cancellare per l'intero tratto e strumenti di selezione con selezione rettangolare.
Mentre corsi come Box
e
Vec
facilitano principalmente
operazioni geometriche,
PartitionedMesh
può
includono anche dati specifici del rendering.
Pennello
Il modulo Pennello funge da configurazione dichiarativa per la creazione e il rendering di tratti, funzionando in modo simile a un carattere di testo. R
Brush
ha
seguenti proprietà:
- Colore: può essere un colore a tinta unita o come base per effetti stratificati e texture.
- Dimensioni: può essere fisso o fungere da base per gli aggiustamenti dinamici delle dimensioni.
- Famiglia. In modo analogo a un carattere tipografico di testo, la famiglia definisce l'insieme del tratto lo stile del testo.
- Epsilon: controlla il livello di dettaglio nella geometria vettoriale del tratto. che rappresentano la più piccola unità di distinzione visiva.
La proprietà epsilon
svolge un ruolo fondamentale per definire la precisione del sistema di coordinate. Nella sezione API Brush sono fornite ulteriori indicazioni su come scegliere un valore epsilon appropriato.
La BrushFamily
funge da
una potente configurazione per creare tratti espressivi senza dover approfondire
a geometria complessa o codice di rendering. La raccolta fornisce un insieme di StockBrushes
predefiniti, tra cui una penna, un evidenziatore e un pennarello sensibili alla pressione.
Authoring
La Authoring
consente agli sviluppatori di acquisire l'input tocco dell'utente e di eseguirne il rendering
tratti a bassa latenza sullo schermo in tempo reale. Questo viene ottenuto tramite la classe
InProgressStrokesView
,
che elabora gli eventi di movimento e visualizza i tratti man mano che vengono disegnati.
Una volta completato un tratto, il modulo invia una notifica all'applicazione client utilizzando il callback
onStrokesFinished()
di
InProgressStrokesFinishedListener
.
Il callback consente all'applicazione di recuperare i dati del tratto finito per il rendering o la memorizzazione.
Rendering
Il modulo Rendering semplifica il processo di disegno di pennellate di inchiostro su una
Android Canvas
Il modulo fornisce un CanvasStrokeRenderer
per Compose e un ViewStrokeRenderer
per i layout basati sulle visualizzazioni, che ottimizzano entrambi le prestazioni di rendering e garantiscono immagini di alta qualità, incluso l'anti-aliasing.
Per eseguire il rendering dei tratti in un canvas, ottieni uno
CanvasStrokeRenderer
utilizzando
create()
. Poi utilizza
draw()
per eseguire il rendering di tratti completati o in corso.
tratto su una tela.
La tela può essere trasformata (pan, zoom o rotazione) durante il disegno del tratto, ma per assicurarti che il tratto sia visualizzato al meglio sullo schermo, la trasformazione applicata alla tela deve essere passata anche a CanvasStrokeRenderer#draw()
.
Per evitare di doverle tenere traccia separatamente, usa
ViewStrokeRenderer
.