L'API Ink étant modularisée, vous ne pouvez utiliser que ce dont vous avez besoin.
Traits
Le module Trait sert de base à la bibliothèque Ink et offre les fonctionnalités interface API principale et contenant les principaux types de données permettant d'interagir avec la bibliothèque. Les principaux types de données de ce module sont les suivants:
StrokeInputBatch
: représente une série d'entrées de pointeur, incluant la position, le code temporel et éventuellement la pression, l'inclinaison et l'orientation. Ces données peuvent être utilisées avec leStroke
ouInProgressStroke
et le type qui fournirait les entrées pour une écriture manuscrite bibliothèque de reconnaissance.Stroke
: représentation immuable d'un trait finalisé avec une géométrie fixe. Le trait comprend uneImmutableStrokeInputBatch
(points d'entrée), unBrush
(style) etPartitionedMesh
(forme géométrique). Les traits peuvent être stockés, manipulés et affichés dans votre application.InProgressStroke
: homologue modifiable deStroke
, conçu pour la gestion incrémentielle des entrées et le rendu en temps réel pendant le processus de dessin. Bien qu'ils soient souvent utilisés indirectement viaInProgressStrokesView
,InProgressStroke
directement pour une personnalisation avancée.
Géométrie
Le module Géométrie fournit une suite de primitives géométriques pour les fonctions basiques et complexes ainsi que les opérations de détection et de transformation des intersections. Ces primitives s'intègrent parfaitement aux traits d'encre, ce qui vous permet de créer des fonctionnalités telles que des gommes pour les traits entiers et des outils de sélection par cadre.
Bien que des classes telles que Box
et Vec
facilitent principalement les opérations géométriques, PartitionedMesh
peut également inclure des données spécifiques au rendu.
Pinceau
Module Pinceau
sert de configuration déclarative pour la création et l'affichage des traits,
fonctionne comme une police
de texte. Un objet Brush
possède les propriétés suivantes :
- Couleur: il peut s'agir d'une couleur unie ou de la base de plusieurs effets à superposer. et des textures.
- Taille: elle peut être fixe ou servir de base pour des ajustements de taille dynamiques.
- Famille : comme pour une police de texte, la famille définit le style général du trait.
- Epsilon : contrôle le niveau de détail de la géométrie vectorielle du trait, qui représente la plus petite unité de distinction visuelle.
La propriété epsilon
joue un rôle crucial dans la définition de la précision de votre système de coordonnées. Pour savoir comment choisir une valeur d'épsilon appropriée, consultez la section API de pinceau.
Le BrushFamily
sert de
une configuration puissante pour créer
des traits expressifs
une géométrie complexe ou un code de rendu. Cette bibliothèque fournit un ensemble
StockBrushes
, y compris un
stylo, surligneur et marqueur sensibles à la pression.
Création
Le module Authoring
permet aux développeurs de capturer les entrées tactiles de l'utilisateur et de les afficher sous forme de traits à faible latence sur l'écran en temps réel. Pour ce faire, vous devez utiliser
la classe InProgressStrokesView
,
qui traite les événements de mouvement
et visualise les traits à mesure qu'ils sont dessinés.
Une fois un trait terminé, le module en informe l'application cliente à l'aide du rappel onStrokesFinished()
de InProgressStrokesFinishedListener
.
Le rappel permet à l'application de récupérer les données de trait finalisées pour l'affichage ou le stockage.
Affichage
Le module de rendu simplifie le processus de dessin de traits d'encre sur un Canvas
Android. Le module fournit un CanvasStrokeRenderer
pour Compose et un ViewStrokeRenderer
pour les mises en page basées sur les vues, qui optimisent tous deux les performances de rendu et garantissent des visuels de haute qualité, y compris l'anticrénelage.
Pour afficher des traits sur un canevas, obtenez un
CanvasStrokeRenderer
à l'aide de la méthode
create()
. Utilisez ensuite la méthode draw()
pour afficher des traits terminés ou en cours sur un canevas.
Vous pouvez transformer le canevas (panoramique, zoom ou rotation) lors du dessin du
trait, mais pour vous assurer que le trait est bien dessiné à l'écran, le
appliquée au canevas doivent également être transmises à
CanvasStrokeRenderer#draw()
Pour éviter d'avoir à le suivre séparément, utilisez plutôt ViewStrokeRenderer
.