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đượcInProgressStrokesViewsử 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
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ẽ
brush 模块定义了笔画的样式。它包含两个主要部分:
Brush:指定笔画的样式,包括基准颜色、基准大小和BrushFamily。BrushFamily类似于字体系列,用于定义笔画的样式。例如,BrushFamily可以表示某种特定样式的标记或荧光笔,从而使不同大小和颜色的笔画共享该样式。StockBrushes:提供用于创建即用型BrushFamily实例的工厂函数。
Hoạt động ghi nhận quyền tác giả
借助 Authoring 模块,您可以捕获用户指针输入,并将其实时呈现为屏幕上的低延迟笔画。它提供了一个 InProgressStrokesView,用于处理运动事件并显示绘制的笔画。
笔画完成后,视图会通过注册的回调 (InProgressStrokesFinishedListener) 通知客户端应用。通过该回调,应用可以检索已完成的笔画以进行渲染或存储。
Kết xuất
Mô-đun Kết xuất giúp bạn 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 được thiết kế để kết xuất hiệu suất cao và giúp phân phố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() để nhận một thực thể CanvasStrokeRenderer. Sau đó, hãy gọi phương thức draw() để kết xuất các nét đã hoàn tất (Stroke) hoặc đang thực hiện (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ữ
Mô-đun storage cung cấp các tiện ích để chuyển đổi tuần tự và giải tuần tự dữ liệu nét vẽ một cách hiệu quả, chủ yếu tập trung vào StrokeInputBatch.
Mô-đun này sử dụng các bộ đệm giao thức và kỹ thuật nén delta được tối ưu hoá, giúp tiết kiệm đáng kể dung lượng lưu trữ so với các phương pháp đơn giản.
Mô-đun lưu trữ giúp đơn giản hoá việc lưu, tải và chia sẻ nét vẽ.