API Ink имеет модульную структуру, поэтому вы можете использовать только то, что вам необходимо.
Инсульты
Модуль «Штрихи» служит основой API Ink. Ключевые типы данных в этом модуле:
-
StrokeInputBatch: Представляет собой последовательность входных данных указателя, включая его положение, метку времени, а также, при необходимости, давление, наклон и ориентацию. -
InProgressStroke: Представляет собой контур, который активно рисуется.InProgressStrokeиспользуется для рендеринга частичных контуров с низкой задержкой и для построения окончательногоStrokeпосле завершения ввода, после чего объект можно использовать повторно.InProgressStrokeиспользуется в компонентеInProgressStrokes. -
Stroke: Неизменяемое представление окончательного варианта штриха с фиксированной геометрией. КаждыйStrokeимеетImmutableStrokeInputBatch(входные точки),Brush(стиль) иPartitionedMesh(геометрическая форма). Вы можете хранить, изменять и отображать штрихи в своем приложении.
Геометрия
Модуль Geometry поддерживает геометрические операции над примитивными фигурами (с использованием специальных классов, таких как Box и Vec ), а также над произвольными фигурами (с использованием PartitionedMesh ), включая обнаружение пересечений и преобразование. PartitionedMesh также может содержать дополнительные данные для поддержки рендеринга.
Щетка
Модуль brush определяет стиль мазков. Он состоит из двух основных частей:
-
Brush: Задает стиль штриха, включая базовый цвет, базовый размер иBrushFamily.BrushFamilyаналогичен семейству шрифтов, он определяет стиль штриха. Например,BrushFamilyможет представлять определенный стиль маркера или текстовыделителя, позволяя штрихам разных размеров и цветов использовать один и тот же стиль. -
StockBrushes: Предоставляет фабричные функции для создания готовых к использованию экземпляровBrushFamily.
Создание контента
Модуль Compose Authoring позволяет захватывать ввод данных с сенсорного экрана пользователем и отображать его в виде штрихов с низкой задержкой в реальном времени. Это достигается с помощью компонента InProgressStrokes , который обрабатывает события движения и отображает штрихи по мере их отрисовки.
После завершения штриха, компонент уведомляет клиентское приложение с помощью функции обратного вызова InProgressStrokesFinishedListener . Это позволяет приложению получить готовые штрихи для рендеринга или сохранения.
В Compose функция InProgressStrokes принимает этот коллбэк в параметре onStrokesFinished . Передайте завершенные штрихи другому компоненту, чтобы отобразить их на экране с помощью модуля рендеринга .
Визуализация
Модуль Rendering упрощает рисование штрихов чернилами на Android Canvas . Он предоставляет CanvasStrokeRenderer для Compose и ViewStrokeRenderer для макетов на основе представлений. Эти рендереры оптимизируют производительность рендеринга и помогают обеспечить высококачественное отображение, включая сглаживание.
Для отрисовки штрихов вызовите метод create() , чтобы получить экземпляр CanvasStrokeRenderer , а затем вызовите метод draw() , чтобы отрисовать на Canvas либо завершенные ( Stroke ), либо незавершенные ( InProgressStroke ) штрихи.
При рисовании обводки можно изменять холст. Например, можно перемещать, масштабировать и вращать изображение. Для корректного отображения обводки необходимо также передать преобразование canvas в метод CanvasStrokeRenderer.draw .
Чтобы избежать отдельного отслеживания преобразования canvas , используйте вместо этого ViewStrokeRenderer .
Хранилище
The storage module provides utilities for
efficiently serializing and deserializing stroke data, primarily focusing
on StrokeInputBatch.
The module uses protocol buffers and optimized delta compression techniques, resulting in significant storage savings compared to naive methods.
The storage module simplifies saving, loading, and sharing strokes.