Ink API 是模块化的,因此您可以仅使用所需的部分。
笔划
Strokes 模块是 Ink 库的基础,提供主要的 API 接口,并包含与库交互的核心数据类型。此模块中的关键数据类型包括
StrokeInputBatch
:表示一系列指针输入,包括位置、时间戳,以及可选的压力、倾斜和方向。此数据可与Stroke
或InProgressStroke
类一起使用,并且是为手写识别库提供输入的类型。Stroke
:最终笔划的不可变表示,具有固定几何形状。Stroke 包含一个ImmutableStrokeInputBatch
(输入点)、一个Brush
(样式)和一个PartitionedMesh
(几何形状)。笔划可以在您的应用程序中存储、操作和渲染。InProgressStroke
:Stroke
的可变对应物,专为增量输入处理和绘制过程中的实时渲染而设计。虽然通常通过InProgressStrokesView
间接使用,但InProgressStroke
可用于高级自定义。
几何
Geometry 模块提供了一套用于基本和复杂形状的几何基元,以及用于交集检测和变换的操作。这些基元与 Ink 笔划无缝集成,使您能够构建诸如全笔划橡皮擦和选框工具等功能。
虽然像 Box
和 Vec
这样的类主要用于促进几何运算,但 PartitionedMesh
也可能包含渲染特定的数据。
画笔
Brush 模块充当笔划创建和渲染的声明式配置,其功能类似于文本字体。一个 Brush
对象具有以下属性
- 颜色:可以是纯色,也可以是分层效果和纹理的基础。
- 大小:可以是固定的,也可以作为动态大小调整的基础。
- 系列:类似于文本字体,系列定义了笔划的整体样式。
- Epsilon:控制笔划矢量几何图形的细节级别,表示视觉区分的最小单位。
epsilon 属性在定义坐标系的精度方面起着至关重要的作用。在 Brush API 部分提供了有关如何选择适当的 epsilon 值的更多指导。
BrushFamily 用作创建富有表现力的笔划的强大配置,而无需深入复杂的几何图形或渲染代码。该库提供了一组预定义的 StockBrushes
,包括压感笔、荧光笔和记号笔。
创作
Authoring 模块使开发人员能够捕获用户触摸输入并将其实时渲染为屏幕上的低延迟笔划。这是通过 InProgressStrokesView
类实现的,该类处理运动事件并在绘制时可视化笔划。
笔划完成后,模块使用 onStrokesFinished()
回调(InProgressStrokesFinishedListener
的回调)通知客户端应用程序。回调允许应用程序检索已完成的笔划数据以进行渲染或存储。
渲染
Rendering 模块简化了将墨水笔划绘制到 Android Canvas
的过程。该模块为 Compose 提供了 CanvasStrokeRenderer
,为基于视图的布局提供了 ViewStrokeRenderer
,两者都优化了渲染性能并确保了高质量的视觉效果,包括抗锯齿。
要将笔划渲染到画布,请使用 create()
方法获取 CanvasStrokeRenderer
实例。然后,使用 draw()
方法将已完成或正在进行的笔划渲染到画布上。
画布可以作为绘制笔划的一部分进行转换(平移、缩放或旋转),但为了确保笔划在屏幕上看起来最佳,应用于画布的转换也必须传递给 CanvasStrokeRenderer#draw()
。为了避免需要单独跟踪此项,请改用 ViewStrokeRenderer
。