模块

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

笔划

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

几何形状

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

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

画笔

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

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

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

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

创作

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

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

渲染

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

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

画布可以在绘制笔划的过程中进行转换(平移、缩放或旋转),但是为了确保笔划在屏幕上显示最佳效果,应用于画布的转换也必须传递给 CanvasStrokeRenderer#draw()。为了避免需要单独跟踪此问题,请改用 ViewStrokeRenderer