Ink API được mô-đun hoá, nên bạn chỉ có thể sử dụng những gì mình cần.
Nét vẽ
Mô-đun strokes đóng vai trò là nền tảng của Ink API. Các kiểu dữ liệu chính trong mô-đun này là:
StrokeInputBatch: Biểu thị một loạt các dữ liệu đầu vào của con trỏ, bao gồm cả vị trí, dấu thời gian và áp lực, độ nghiêng cũng như hướng (không bắt buộc).InProgressStroke: Biểu thị một nét đang được vẽ.InProgressStrokeđược dùng để kết xuất các nét vẽ một phần có độ trễ thấp và tạoStrokecuối cùng sau khi hoàn tất thao tác nhập. Sau đó, bạn có thể dùng lại đối tượng này.InProgressStrokeđược thành phần kết hợpInProgressStrokessử dụng.Stroke: Một bản trình bày bất biến của nét đã hoàn thành với hình dạng cố định. MỗiStrokeđều có mộtImmutableStrokeInputBatch(điểm đầu vào), mộtBrush(kiểu) và mộtPartitionedMesh(hình dạng hình học). Bạn có thể lưu trữ, thao tác và hiển thị nét vẽ trong ứng dụng của mình.
Hình học
The Geometry module supports geometric operations on primitive shapes (using dedicated classes like Box and Vec), as well as arbitrary shapes (using PartitionedMesh), including intersection detection and transformation. PartitionedMesh can also hold additional data to support rendering.
Bút vẽ
The brush module defines the style of strokes. It
consists of two main parts:
Brush: Specifies the style of a stroke including base color, base size, andBrushFamily.BrushFamilyis analogous to a font family, it defines a stroke's style. For example, aBrushFamilycan represent a specific style of marker or highlighter, allowing strokes with different sizes and colors to share that style.StockBrushes: Provides factory functions for creating ready-to-useBrushFamilyinstances.
Hoạt động ghi nhận quyền tác giả
Mô-đun Tạo của Compose cho phép bạn ghi lại dữ liệu đầu vào bằng thao tác chạm của người dùng và kết xuất dữ liệu đó dưới dạng các nét vẽ có độ trễ thấp trên màn hình theo thời gian thực. Điều này được thực hiện thông qua thành phần kết hợp InProgressStrokes. Thành phần này xử lý các sự kiện chuyển động và hiển thị nét vẽ khi chúng được vẽ.
Sau khi một nét được hoàn thành, thành phần kết hợp sẽ thông báo cho ứng dụng khách bằng lệnh gọi lại InProgressStrokesFinishedListener. Điều này cho phép ứng dụng truy xuất các nét đã hoàn thành để kết xuất hoặc lưu trữ.
Trong Compose, InProgressStrokes sẽ nhận lệnh gọi lại này trong tham số onStrokesFinished. Truyền các nét vẽ đã hoàn tất đến một thành phần kết hợp khác để xác nhận các nét vẽ đó trên màn hình bằng cách sử dụng mô-đun kết xuất.
Kết xuất
Mô-đun Kết xuất giúp đơn giản hoá việc vẽ nét mực lên Canvas Android.
Thư viện này cung cấp CanvasStrokeRenderer cho Compose và ViewStrokeRenderer cho bố cục dựa trên khung hiển thị. Các trình kết xuất này tối ưu hoá hiệu suất kết xuất và giúp mang lại hình ảnh chất lượng cao, bao gồm cả tính năng khử răng cưa.
Để kết xuất nét vẽ, hãy gọi phương thức create() để lấy một thực thể CanvasStrokeRenderer, sau đó gọi phương thức draw() để kết xuất nét vẽ đã hoàn tất (Stroke) hoặc đang diễn ra (InProgressStroke) lên một Canvas.
Bạn có thể biến đổi canvas khi vẽ một nét. Ví dụ: xoay, thu phóng và di chuyển. Để kết xuất nét vẽ một cách chính xác, bạn cũng phải truyền phép biến đổi canvas đến CanvasStrokeRenderer.draw.
Để tránh theo dõi riêng phép biến đổi canvas, hãy dùng ViewStrokeRenderer.
Dung lượng lưu trữ
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.