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ẽ
笔画模块是 Ink API 的基础。此模块中的关键数据类型包括:
StrokeInputBatch:表示一系列指针输入,包括其位置、时间戳,以及可选的压力、倾斜度和方向。InProgressStroke:表示正在绘制的笔画。InProgressStroke用于以低延迟渲染部分笔画,并在输入完成后构建最终的Stroke,之后该对象可以重复使用。InProgressStroke由InProgressStrokes可组合项使用。Stroke:已完成的笔画的不可变表示形式,具有固定的几何形状。每个Stroke都有一个ImmutableStrokeInputBatch(输入点)、一个Brush(样式)和一个PartitionedMesh(几何形状)。您可以在应用中存储、处理和渲染笔画。
Hình học
Mô-đun Geometry hỗ trợ các thao tác hình học trên các hình dạng nguyên thuỷ (bằng cách sử dụng các lớp chuyên dụng như Box và Vec), cũng như các hình dạng tuỳ ý (bằng cách sử dụng PartitionedMesh), bao gồm cả việc phát hiện giao điểm và biến đổi. PartitionedMesh cũng có thể lưu giữ dữ liệu bổ sung để hỗ trợ việc kết xuất.
Bút vẽ
Mô-đun brush xác định kiểu nét vẽ. Thư viện này bao gồm 2 phần chính:
Brush: Chỉ định kiểu của một nét vẽ, bao gồm màu cơ bản, kích thước cơ bản vàBrushFamily.BrushFamilytương tự như một bộ phông chữ, nó xác định kiểu của nét vẽ. Ví dụ:BrushFamilycó thể biểu thị một kiểu bút đánh dấu hoặc bút đánh dấu cụ thể, cho phép các nét vẽ có kích thước và màu sắc khác nhau dùng chung kiểu đó.StockBrushes: Cung cấp các hàm factory để tạo các thực thểBrushFamilysẵn sàng sử dụng.
Hoạt động ghi nhận quyền tác giả
借助 Compose 创作模块,您可以捕获用户触摸输入,并将其实时呈现为屏幕上的低延迟笔画。这是通过 InProgressStrokes 可组合项实现的,该可组合项可处理运动事件并在绘制笔画时显示笔画。
笔画完成后,可组合项会使用 InProgressStrokesFinishedListener 回调通知客户端应用。这允许应用检索完成的笔画以进行渲染或存储。
在 Compose 中,InProgressStrokes 通过 onStrokesFinished 参数接收此回调。将完成的笔画传递给另一个可组合项,以使用渲染模块将其提交到屏幕。
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ữ
存储模块提供用于高效序列化和反序列化笔画数据的实用程序,主要侧重于 StrokeInputBatch。
该模块使用 Protocol Buffer 和优化的增量压缩技术,与简单的方法相比,可显著节省存储空间。
存储模块简化了笔画的保存、加载和分享。