Ink API 採用模組化設計,因此您只需要使用所需功能。
筆觸
The strokes module serves as the foundation of the Ink API. Key data types within this module are:
StrokeInputBatch: Represents a series of pointer inputs, including their position, timestamp, and optionally pressure, tilt, and orientation.InProgressStroke: Represents a stroke that is actively being drawn.InProgressStrokeis used to render partial strokes with low latency and to build the finalStrokeonce input is complete, after which the object can be reused. `InProgressStrokeis used byInProgressStrokesView.Stroke: An immutable representation of a finalized stroke with fixed geometry. EachStrokehas anImmutableStrokeInputBatch(input points), aBrush(style), and aPartitionedMesh(geometric shape). You can store, manipulate, and render strokes within your application.
幾何學
Geometry 模組支援對基本形狀執行幾何運算 (使用 Box 和 Vec 等專用類別),以及任意形狀 (使用 PartitionedMesh),包括交集偵測和轉換。PartitionedMesh 也可以保留額外資料,以支援算繪作業。
Brush
brush 模組會定義筆觸樣式。當中包含下列兩項主要元素:
Brush:指定筆觸的樣式,包括基本顏色、基本大小和BrushFamily。BrushFamily類似於字型系列,可定義筆觸的樣式。舉例來說,BrushFamily可以代表特定樣式的標記或螢光筆,讓不同大小和顏色的筆觸共用該樣式。StockBrushes:提供原廠函式,用於建立可立即使用的BrushFamily例項。
編寫
「撰寫」模組可讓您擷取使用者指標輸入內容,並即時在畫面上以低延遲筆觸呈現。這個檢視區塊提供 InProgressStrokesView,可處理動作事件,並在繪製筆劃時顯示。
筆劃完成後,檢視區塊會透過註冊的回呼 (InProgressStrokesFinishedListener) 通知用戶端應用程式。應用程式可透過回呼擷取完成的筆劃,以便算繪或儲存。
轉譯
使用「Rendering」模組,即可在 Android Canvas 上繪製筆跡筆劃。
當中提供 Compose 的 CanvasStrokeRenderer 和以檢視區塊為基礎的版面配置 ViewStrokeRenderer。這些算繪器專為高效能算繪而設計,有助於提供高品質的視覺效果,包括反鋸齒。
如要算繪筆觸,請呼叫 create() 方法來取得 CanvasStrokeRenderer 例項。然後呼叫 draw() 方法,將完成 (Stroke) 或進行中 (InProgressStroke) 的筆劃算繪到 Canvas 上。
繪製筆觸時,你可以變形畫布。例如平移、縮放及旋轉。如要正確算繪筆觸,您也必須將 canvas 轉換傳遞至 CanvasStrokeRenderer.draw。
如要避免個別追蹤 canvas 轉換,請改用 ViewStrokeRenderer。
儲存空間
儲存模組提供實用工具,可有效率地序列化及還原序列化筆劃資料,主要著重於 StrokeInputBatch。
這個模組使用通訊協定緩衝區和最佳化的差異壓縮技術,與原始方法相比,可大幅節省儲存空間。
儲存空間模組可簡化筆劃的儲存、載入及共用作業。