A API Ink é modularizada, então você pode usar apenas o que precisa.
Braçadas
The strokes module serves as the foundation of the Ink API. Key data types within this module are:
StrokeInputBatch: Represents a series of pointer inputs, including their position, timestamp, and optionally pressure, tilt, and orientation.InProgressStroke: Represents a stroke that is actively being drawn.InProgressStrokeis used to render partial strokes with low latency and to build the finalStrokeonce input is complete, after which the object can be reused. `InProgressStrokeis used byInProgressStrokesView.Stroke: An immutable representation of a finalized stroke with fixed geometry. EachStrokehas anImmutableStrokeInputBatch(input points), aBrush(style), and aPartitionedMesh(geometric shape). You can store, manipulate, and render strokes within your application.
Geometria
O módulo Geometry oferece suporte a operações geométricas em formas primitivas (usando classes dedicadas como Box e Vec), além de formas arbitrárias (usando PartitionedMesh), incluindo detecção e transformação de interseção. O PartitionedMesh também pode conter dados extras para oferecer suporte à renderização.
Brush
O módulo brush define o estilo dos traços. Ela
é composta por duas partes principais:
Brush: especifica o estilo de um traço, incluindo cor base, tamanho base eBrushFamily.BrushFamilyé análogo a uma família de fontes, definindo o estilo de um traço. Por exemplo, umBrushFamilypode representar um estilo específico de marcador ou destaque, permitindo que traços com tamanhos e cores diferentes compartilhem esse estilo.StockBrushes: fornece funções de fábrica para criar instânciasBrushFamilyprontas para uso.
Criação
O módulo Criação permite capturar a entrada do ponteiro do usuário e renderizá-la como traços de baixa latência na tela em tempo real. Ele fornece uma InProgressStrokesView, que processa eventos de movimento e mostra os traços conforme eles são desenhados.
Quando um traço é concluído, a visualização notifica o aplicativo cliente por meio
de um callback registrado
(InProgressStrokesFinishedListener). O callback permite
que o aplicativo recupere o traço finalizado para renderização ou armazenamento.
Renderização
O módulo Rendering ajuda a desenhar traços de tinta em um
Canvas do Android.
Ele fornece CanvasStrokeRenderer para o Compose e
ViewStrokeRenderer para layouts baseados em visualizações. Esses renderizadores são projetados para renderização de alta performance e ajudam a oferecer recursos visuais de alta qualidade, incluindo antialiasing.
Para renderizar traços, chame o método create() para receber uma instância de CanvasStrokeRenderer. Em seguida, chame o método draw() para
renderizar traços concluídos (Stroke) ou em andamento
(InProgressStroke) em um Canvas.
É possível transformar a tela ao desenhar um traço. Exemplos incluem panorâmica, zoom e rotação. Para renderizar o traço corretamente, também é necessário transmitir a transformação canvas para CanvasStrokeRenderer.draw.
Para evitar o rastreamento da transformação canvas separadamente, use
ViewStrokeRenderer.
Armazenamento
O módulo storage fornece utilitários para
serializar e desserializar dados de traços de maneira eficiente, principalmente com foco
em StrokeInputBatch.
O módulo usa buffers de protocolo e técnicas otimizadas de compactação delta, resultando em uma economia significativa de armazenamento em comparação com métodos simples.
O módulo de armazenamento simplifica o salvamento, o carregamento e o compartilhamento de traços.