模块

Ink API 采用模块化设计,因此您只需使用所需部分即可。

笔画

Strokes 模块是 Ink 库的基础,提供主要的 API 接口,并包含用于与库交互的核心数据类型。此模块中的关键数据类型包括

几何

Geometry 模块提供了一套几何图元,用于基本和复杂形状,以及用于交集检测和变换的操作。这些图元与墨迹笔画无缝集成,使您能够构建诸如整笔橡皮擦和选框选择工具等功能。

虽然 BoxVec 等类主要用于几何操作,但 PartitionedMesh 也可能包含渲染专用数据。

画笔

Brush 模块充当笔画创建和渲染的声明性配置,功能类似于文本字体。Brush 对象具有以下属性:

  • 颜色:可以是纯色,也可以是分层效果和纹理的基础。
  • 大小:可以是固定的,也可以作为动态大小调整的基础。
  • 系列:类似于文本字体,系列定义了笔画的整体样式。
  • Epsilon:控制笔画矢量几何图形的细节级别,表示视觉区分的最小单位。

epsilon 属性在定义坐标系精度方面起着关键作用。Brush API 部分提供了有关如何选择合适的 epsilon 值的更多指导。

BrushFamily 是一个强大的配置,用于创建富有表现力的笔画,而无需深入研究复杂的几何图形或渲染代码。该库提供了一组预定义的 StockBrushes,包括压感笔、荧光笔和记号笔。

创作

Authoring 模块使开发者能够捕获用户触摸输入,并实时将其渲染为屏幕上的低延迟笔画。这通过 InProgressStrokesView 类实现,该类处理运动事件并可视化绘制中的笔画。

笔画完成后,该模块会使用 InProgressStrokesFinishedListeneronStrokesFinished() 回调通知客户端应用。该回调允许应用检索完成的笔画数据以进行渲染或存储。

渲染

Rendering 模块简化了在 Android Canvas 上绘制墨迹笔画的过程。该模块提供了适用于 Compose 的 CanvasStrokeRenderer 和适用于基于视图的布局的 ViewStrokeRenderer,两者都优化了渲染性能并确保高质量视觉效果,包括抗锯齿。

要将笔画渲染到画布上,请使用 create() 方法获取 CanvasStrokeRenderer 实例。然后,使用 draw() 方法渲染已完成或正在进行的笔画到画布上。

画布可以在绘制笔画时进行变换(平移、缩放或旋转),但为了确保笔画在屏幕上呈现最佳效果,应用于画布的变换也必须传递给 CanvasStrokeRenderer#draw()。为避免单独跟踪此信息,请改用 ViewStrokeRenderer