モジュール

Ink API はモジュール化されているため、必要なものだけを使用できます。

ストローク

Strokes モジュールは、Ink ライブラリの基盤として機能し、メインの API インターフェースを提供し、ライブラリの操作に必要なコア データ型を備えています。このモジュールの主なデータ型は次のとおりです。

  • StrokeInputBatch: 位置、タイムスタンプ、必要に応じて圧力、傾斜、向きを網羅する一連のポインタ入力を表します。このデータは Stroke または InProgressStroke 手書き入力用の入力を提供する型です。 使用します。
  • Stroke: 固定されたジオメトリを持つ確定済みのストロークの不変表現。ストロークは、ImmutableStrokeInputBatch(入力ポイント)、Brush(スタイル設定)、PartitionedMesh(ジオメトリック シェイプ)で構成されます。ストロークは、アプリ内で保存、操作、レンダリングできます。
  • InProgressStroke: 描画プロセス中の増分入力処理とリアルタイム レンダリング用に設計された、Stroke の変更可能な代替手段。多くの場合、 InProgressStrokesView InProgressStroke 直接利用して高度なカスタマイズを行えます

ジオメトリ

Geometry モジュール には、基本および複雑なジオメトリ プリミティブのスイートが用意されています。 交差点の検出と変換のオペレーションが含まれます。 これらのプリミティブはインク ストロークとシームレスに統合され、ストローク全体を消去するツールやマーキー選択ツールなどの機能を構築できます。

BoxVec などのクラスは主にジオメトリ オペレーションを容易にしますが、PartitionedMesh にはレンダリング固有のデータも含まれる場合があります。

ブラシ

Brush モジュールは、ストロークの作成とレンダリングの宣言型構成として機能し、テキスト フォントと同様に機能します。Brush オブジェクトには次のプロパティがあります。

  • : 無地一色にしたり、多層エフェクトやベースとして使用したりできます。 作成します。
  • サイズ: 固定することも、動的なサイズ調整のベースとして使用することもできます。
  • ファミリー: テキストの書体と同様に、ファミリーはストロークの全体的なスタイルを定義します。
  • Epsilon: ストロークのベクター ジオメトリの詳細レベルを制御します。 視覚的識別の最小単位を表します。

epsilon プロパティは、 座標系の精度を定義するうえで非常に重要な役割を果たします。詳細なガイダンス Brush API のセクションで、 適切なイプシロン値を選択します

BrushFamily の役割 複雑な設定に詳しくなくても、表現力豊かなストロークを作成できるパワフルな構成です。 複雑なジオメトリやレンダリング コードです。このライブラリには、圧力感知ペン、ハイライト、マーカーなど、事前定義された一連の StockBrushes が用意されています。

オーサリング

Authoring モジュールを使用すると、デベロッパーはユーザーのタッチ入力をキャプチャし、低レイテンシのストロークとしてリアルタイムで画面にレンダリングできます。これは InProgressStrokesView クラスによって実現されます。このクラスは、モーション イベントを処理し、描画されるストロークを可視化します。

ストロークが完了すると、モジュールは onStrokesFinished() コールバックは InProgressStrokesFinishedListener。 このコールバックにより、アプリは レンダリングや保存用の完成されたストローク データなどです。

レンダリング

Rendering モジュールは、インク ストロークを Android Canvas。モジュール CanvasStrokeRenderer を提供する データ アナリストが ViewStrokeRenderer ビューベースのレイアウトに対応しており、どちらもレンダリング パフォーマンスを最適化し、 アンチエイリアスを含む高品質のビジュアルを 提供します

ストロークをキャンバスにレンダリングするには、create() メソッドを使用して CanvasStrokeRenderer インスタンスを取得します。次に、draw() メソッドを使用して、完了したストロークまたは進行中のストロークをキャンバスにレンダリングします。

キャンバスは、ストロークの描画の一環として変換(パン、ズーム、回転)できますが、ストロークが画面に最適に描画されるようにするには、キャンバスに適用された変換も CanvasStrokeRenderer#draw() に渡す必要があります。これを個別に追跡する必要がないようにするには、代わりに ViewStrokeRenderer を使用します。