Ink API はモジュール化されているため、必要なものだけを使用できます。
ストローク
Strokes モジュールは、Ink ライブラリの基盤として機能し、メインの API インターフェースを提供し、ライブラリの操作に必要なコア データ型を備えています。このモジュールの主なデータ型は次のとおりです。
StrokeInputBatch
: 位置、タイムスタンプ、必要に応じて圧力、傾斜、向きを網羅する一連のポインタ入力を表します。このデータはStroke
またはInProgressStroke
手書き入力用の入力を提供する型です。 使用します。Stroke
: 固定されたジオメトリを持つ確定済みのストロークの不変表現。ストロークは、ImmutableStrokeInputBatch
(入力ポイント)、Brush
(スタイル設定)、PartitionedMesh
(ジオメトリック シェイプ)で構成されます。ストロークは、アプリ内で保存、操作、レンダリングできます。InProgressStroke
: 描画プロセス中の増分入力処理とリアルタイム レンダリング用に設計された、Stroke
の変更可能な代替手段。多くの場合、InProgressStrokesView
InProgressStroke
直接利用して高度なカスタマイズを行えます
ジオメトリ
Geometry モジュール には、基本および複雑なジオメトリ プリミティブのスイートが用意されています。 交差点の検出と変換のオペレーションが含まれます。 これらのプリミティブはインク ストロークとシームレスに統合され、ストローク全体を消去するツールやマーキー選択ツールなどの機能を構築できます。
Box
や Vec
などのクラスは主にジオメトリ オペレーションを容易にしますが、PartitionedMesh
にはレンダリング固有のデータも含まれる場合があります。
ブラシ
Brush モジュールは、ストロークの作成とレンダリングの宣言型構成として機能し、テキスト フォントと同様に機能します。Brush
オブジェクトには次のプロパティがあります。
- 色: 無地一色にしたり、多層エフェクトやベースとして使用したりできます。 作成します。
- サイズ: 固定することも、動的なサイズ調整のベースとして使用することもできます。
- ファミリー: テキストの書体と同様に、ファミリーはストロークの全体的なスタイルを定義します。
- Epsilon: ストロークのベクター ジオメトリの詳細レベルを制御します。 視覚的識別の最小単位を表します。
epsilon
プロパティは、
座標系の精度を定義するうえで非常に重要な役割を果たします。詳細なガイダンス
Brush API のセクションで、
適切なイプシロン値を選択します
BrushFamily
の役割
複雑な設定に詳しくなくても、表現力豊かなストロークを作成できるパワフルな構成です。
複雑なジオメトリやレンダリング コードです。このライブラリには、圧力感知ペン、ハイライト、マーカーなど、事前定義された一連の StockBrushes
が用意されています。
オーサリング
Authoring
モジュールを使用すると、デベロッパーはユーザーのタッチ入力をキャプチャし、低レイテンシのストロークとしてリアルタイムで画面にレンダリングできます。これは InProgressStrokesView
クラスによって実現されます。このクラスは、モーション イベントを処理し、描画されるストロークを可視化します。
ストロークが完了すると、モジュールは
onStrokesFinished()
コールバックは
InProgressStrokesFinishedListener
。
このコールバックにより、アプリは
レンダリングや保存用の完成されたストローク データなどです。
レンダリング
Rendering モジュールは、インク ストロークを
Android Canvas
。モジュール
CanvasStrokeRenderer
を提供する
データ アナリストが
ViewStrokeRenderer
ビューベースのレイアウトに対応しており、どちらもレンダリング パフォーマンスを最適化し、
アンチエイリアスを含む高品質のビジュアルを
提供します
ストロークをキャンバスにレンダリングするには、create()
メソッドを使用して CanvasStrokeRenderer
インスタンスを取得します。次に、draw()
メソッドを使用して、完了したストロークまたは進行中のストロークをキャンバスにレンダリングします。
キャンバスは、ストロークの描画の一環として変換(パン、ズーム、回転)できますが、ストロークが画面に最適に描画されるようにするには、キャンバスに適用された変換も CanvasStrokeRenderer#draw()
に渡す必要があります。これを個別に追跡する必要がないようにするには、代わりに ViewStrokeRenderer
を使用します。