A API Ink é modularizada, então você pode usar apenas o que precisa.
Braçadas
O módulo strokes serve como base para a API Ink. Os principais tipos de dados neste módulo são:
StrokeInputBatch: representa uma série de entradas de ponteiro, incluindo posição, carimbo de data/hora e, opcionalmente, pressão, inclinação e orientação.InProgressStroke: Representa um traço que está sendo desenhado ativamente. OInProgressStrokeé usado para renderizar traços parciais com baixa latência e para criar oStrokefinal quando a entrada é concluída. Depois disso, o objeto pode ser reutilizado. `InProgressStrokeé usado porInProgressStrokesView.Stroke: uma representação imutável de um traço finalizado com geometria fixa. CadaStroketem umImmutableStrokeInputBatch(pontos de entrada), umBrush(estilo) e umaPartitionedMesh(forma geométrica). É possível armazenar, manipular e renderizar traços no aplicativo.
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.