Mô-đun

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ạo Stroke cuố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 InProgressStrokesView sử 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ỗi Stroke đều có một ImmutableStrokeInputBatch (điểm đầu vào), một Brush (kiểu) và một PartitionedMesh (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, and BrushFamily. BrushFamily is analogous to a font family, it defines a stroke's style. For example, a BrushFamily can 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-use BrushFamily instances.

Hoạt động ghi nhận quyền tác giả

Mô-đun Authoring (Tác giả) cho phép bạn ghi lại thông tin đầu vào của con trỏ người dùng và kết xuất thông tin đó 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. Thành phần này cung cấp một InProgressStrokesView, xử lý các sự kiện chuyển động và hiển thị các nét khi chúng được vẽ.

Sau khi một nét vẽ hoàn tất, khung hiển thị sẽ thông báo cho ứng dụng khách thông qua một lệnh gọi lại đã đăng ký (InProgressStrokesFinishedListener). Lệnh gọi lại này cho phép ứng dụng truy xuất nét vẽ đã hoàn tất để kết xuất hoặc lưu trữ.

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ẽ.