模块

Ink API 是模块化的,因此您可以只使用您需要的部分。

笔画

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

几何

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

虽然诸如 BoxVec 之类的类主要用于促进几何运算,但 PartitionedMesh 也可能包含渲染特定的数据。

笔刷

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

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

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

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

创作

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

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

渲染

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

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

画布可以作为绘制笔画的一部分进行变换(平移、缩放或旋转),但为了确保笔画在屏幕上看起来最佳,应用于画布的变换也必须传递给 CanvasStrokeRenderer#draw()。为了避免需要单独跟踪此变换,请改用 ViewStrokeRenderer