Ink API 採用模組化設計,因此您只需要使用所需功能。
筆觸
筆劃模組是 Ink API 的基礎,這個模組中的主要資料類型包括:
StrokeInputBatch:代表一系列指標輸入內容,包括位置、時間戳記,以及選用的壓力、傾斜度和方向。InProgressStroke:代表正在繪製的筆劃。InProgressStroke用於以低延遲時間算繪部分筆劃,並在輸入完成後建構最終的Stroke,之後即可重複使用該物件。InProgressStroke由InProgressStrokes可組合函式使用。Stroke:最終筆劃的不可變更表示法,具有固定幾何圖形。每個Stroke都有ImmutableStrokeInputBatch(輸入點)、Brush(樣式) 和PartitionedMesh(幾何形狀)。您可以在應用程式中儲存、操控及算繪筆劃。
幾何學
Geometry 模組支援對基本形狀執行幾何運算 (使用 Box 和 Vec 等專用類別),以及任意形狀 (使用 PartitionedMesh),包括交集偵測和轉換。PartitionedMesh 也可以保留額外資料,以支援算繪作業。
Brush
brush 模块定义了笔画的样式。它包含两个主要部分:
Brush:指定笔画的样式,包括基准颜色、基准大小和BrushFamily。BrushFamily类似于字体系列,用于定义笔画的样式。例如,BrushFamily可以表示某种特定样式的标记或荧光笔,从而使不同大小和颜色的笔画共享该样式。StockBrushes:提供用于创建即用型BrushFamily实例的工厂函数。
編寫
借助 Compose 创作模块,您可以捕获用户触摸输入,并将其实时呈现为屏幕上的低延迟笔画。这是通过 InProgressStrokes 可组合项实现的,该可组合项可处理运动事件并在绘制笔画时显示笔画。
笔画完成后,可组合项会使用 InProgressStrokesFinishedListener 回调通知客户端应用。这允许应用检索完成的笔画以进行渲染或存储。
在 Compose 中,InProgressStrokes 通过 onStrokesFinished 参数接收此回调。将完成的笔画传递给另一个可组合项,以使用渲染模块将其提交到屏幕。
轉譯
使用 Rendering 模組,即可輕鬆在 Android Canvas 上繪製墨水筆觸。當中提供 Compose 的 CanvasStrokeRenderer 和以檢視區塊為基礎的版面配置 ViewStrokeRenderer。這些算繪器可提升算繪效能,並提供高品質的視覺效果,包括反鋸齒。
如要算繪筆劃,請呼叫 create() 方法取得 CanvasStrokeRenderer 例項,然後呼叫 draw() 方法,將完成 (Stroke) 或進行中 (InProgressStroke) 的筆劃算繪到 Canvas 上。
繪製筆觸時,你可以變形畫布。例如平移、縮放及旋轉。如要正確算繪筆觸,您也必須將 canvas 轉換傳遞至 CanvasStrokeRenderer.draw。
如要避免個別追蹤 canvas 轉換,請改用 ViewStrokeRenderer。
儲存空間
儲存模組提供實用工具,可有效率地序列化及還原序列化筆劃資料,主要著重於 StrokeInputBatch。
這個模組使用通訊協定緩衝區和最佳化的差異壓縮技術,與原始方法相比,可大幅節省儲存空間。
儲存空間模組可簡化筆劃的儲存、載入及共用作業。