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