ماژول ها

Ink API ماژولار است، بنابراین می‌توانید فقط از آنچه نیاز دارید استفاده کنید.

سکته مغزی

笔画模块是 Ink API 的基础。此模块中的关键数据类型包括:

  • StrokeInputBatch:表示一系列指针输入,包括其位置、时间戳,以及可选的压力、倾斜度和方向。
  • InProgressStroke:表示正在绘制的笔画。InProgressStroke 用于以低延迟渲染部分笔画,并在输入完成后构建最终的 Stroke,之后该对象可以重复使用。 InProgressStrokeInProgressStrokes 可组合项使用。
  • Stroke:已完成的笔画的不可变表示形式,具有固定的几何形状。每个 Stroke 都有一个 ImmutableStrokeInputBatch(输入点)、一个 Brush(样式)和一个 PartitionedMesh(几何形状)。您可以在应用中存储、处理和渲染笔画。

هندسه

几何图形模块支持对基本形状(使用 BoxVec 等专用类)以及任意形状(使用 PartitionedMesh)进行几何运算,包括相交检测和转换。 PartitionedMesh 还可以保存其他数据以支持渲染。

برس

brush 模块定义了笔画的样式。它包含两个主要部分:

  • Brush:指定笔画的样式,包括基准颜色、基准大小和 BrushFamilyBrushFamily 类似于字体系列,用于定义笔画的样式。例如,BrushFamily 可以表示某种特定样式的标记或荧光笔,从而使不同大小和颜色的笔画共享该样式。
  • StockBrushes:提供用于创建即用型 BrushFamily 实例的工厂函数。

تألیف

借助 Compose 创作模块,您可以捕获用户触摸输入,并将其实时呈现为屏幕上的低延迟笔画。这是通过 InProgressStrokes 可组合项实现的,该可组合项可处理运动事件并在绘制笔画时显示笔画。

笔画完成后,可组合项会使用 InProgressStrokesFinishedListener 回调通知客户端应用。这允许应用检索完成的笔画以进行渲染或存储。

在 Compose 中,InProgressStrokes 通过 onStrokesFinished 参数接收此回调。将完成的笔画传递给另一个可组合项,以使用渲染模块将其提交到屏幕。

رندرینگ

ماژول Rendering، ترسیم خطوط جوهر روی Canvas اندروید را ساده می‌کند. این CanvasStrokeRenderer را برای Compose و ViewStrokeRenderer را برای طرح‌بندی‌های مبتنی بر نما فراهم می‌کند. این رندرکننده‌ها عملکرد رندر را بهینه کرده و به ارائه تصاویر با کیفیت بالا، از جمله ضد لبه‌سازی، کمک می‌کنند.

برای رندر کردن strokeها، متد create() را برای دریافت یک نمونه CanvasStrokeRenderer فراخوانی کنید، و سپس متد draw() را برای رندر strokeهای تکمیل‌شده ( Stroke ) یا در حال انجام ( InProgressStroke ) روی یک Canvas فراخوانی کنید.

شما می‌توانید هنگام رسم یک stroke، بوم را تغییر شکل دهید. مثال‌ها شامل panning، zooming و rotation می‌شود. برای رندر صحیح stroke، باید transform canvas را به CanvasStrokeRenderer.draw نیز ارسال کنید.

برای جلوگیری از ردیابی جداگانه‌ی تبدیل canvas ، به جای آن ViewStrokeRenderer استفاده کنید.

ذخیره‌سازی

存储模块提供用于高效序列化和反序列化笔画数据的实用程序,主要侧重于 StrokeInputBatch

该模块使用 Protocol Buffer 和优化的增量压缩技术,与简单的方法相比,可显著节省存储空间。

存储模块简化了笔画的保存、加载和分享。