模块

Ink API 采用模块化设计,因此您只需使用所需的功能。

笔画

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

几何体

Geometry 模块为基本形状和复杂形状提供了一套几何图形基元,以及用于交叉检测和转换的操作。这些基元可与手写笔触无缝集成,让您能够构建全笔触橡皮擦和矩形选择工具等功能。

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

Brush

Brush 模块 用作笔触创建和渲染的声明性配置, 其功能与文本字体类似。答 Brush 对象 以下属性:

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

epsilon 属性会播放 在定义坐标系的精度方面起着至关重要的作用。如需有关如何选择合适的 epsilon 值的更多指导,请参阅画笔 API 部分。

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

编写

借助 Authoring 模块,开发者可以捕获用户触摸输入,并将其实时渲染为屏幕上的低延迟笔触。这是通过 InProgressStrokesView 类, 该组件会处理动作事件,并在绘制时直观呈现笔触。

当笔画完成时,该模块会使用 onStrokesFinished() 回调 InProgressStrokesFinishedListener。 借助回调,应用可以检索完成的笔触数据以进行渲染或存储。

渲染

渲染模块简化了在 Android Canvas。模块 提供 CanvasStrokeRendererViewStrokeRenderer 基于 View 的布局,这两者都能优化渲染性能,并确保 高品质视觉元素,包括抗锯齿功能。

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

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