Модули

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 .

Создание контента

The Compose Authoring module lets you capture user touch input and render it as low-latency strokes on the screen in real time. This is achieved through the InProgressStrokes composable, which processes motion events and displays the strokes as they are drawn.

Once a stroke is completed, the composable notifies the client application using an InProgressStrokesFinishedListener callback. This allows the application to retrieve the finished strokes for rendering or storage.

In Compose, InProgressStrokes takes this callback in the onStrokesFinished parameter. Pass the finished strokes to another composable to commit them to the screen using the rendering module.

Визуализация

Модуль Rendering упрощает рисование штрихов чернилами на Android Canvas . Он предоставляет CanvasStrokeRenderer для Compose и ViewStrokeRenderer для макетов на основе представлений. Эти рендереры оптимизируют производительность рендеринга и помогают обеспечить высококачественное отображение, включая сглаживание.

Для отрисовки штрихов вызовите метод create() , чтобы получить экземпляр CanvasStrokeRenderer , а затем вызовите метод draw() , чтобы отрисовать на Canvas либо завершенные ( Stroke ), либо незавершенные ( InProgressStroke ) штрихи.

При рисовании обводки можно изменять холст. Например, можно перемещать, масштабировать и вращать изображение. Для корректного отображения обводки необходимо также передать преобразование canvas в метод CanvasStrokeRenderer.draw .

Чтобы избежать отдельного отслеживания преобразования canvas , используйте вместо этого ViewStrokeRenderer .

Хранилище

Модуль хранения предоставляет утилиты для эффективной сериализации и десериализации данных об инсульте, в первую очередь, с упором на StrokeInputBatch .

Модуль использует протоколы буферизации и оптимизированные методы дельта-сжатия, что приводит к значительной экономии места по сравнению с простыми методами.

Модуль хранения упрощает сохранение, загрузку и обмен результатами действий.