Navigation 3 は、Compose と連携するように設計された新しいナビゲーション ライブラリです。Navigation 3 では、バックスタックを完全に制御できます。デスティネーションとの間の移動は、リストからアイテムを追加または削除するだけです。以下を提供することで、柔軟なアプリ ナビゲーション システムを作成します。
- バックスタックをモデリングするための規則。バックスタック上の各エントリは、ユーザーが移動したコンテンツを表します。
- バックスタックが変更されると自動的に更新される UI(アニメーションを含む)
- バックスタック内のアイテムのスコープで、アイテムがバックスタックにある間、状態を保持できます。
- 複数のデスティネーションを同時に表示し、それらのレイアウトをシームレスに切り替えることができる適応型レイアウト システム
- コンテンツが親レイアウトと通信するためのメカニズム(メタデータ)
大まかには、Navigation 3 は次の方法で実装します。
- ユーザーがアプリ内で移動できるコンテンツを定義し、それぞれに固有のキーを割り当てます。また、そのキーをコンテンツに解決する関数を追加します。コンテンツへのキーの解決をご覧ください。
- キーが push され、ユーザーがアプリを操作するときに削除されるバックスタックを作成します。バックスタックを作成するをご覧ください。
NavDisplay
を使用して、アプリの戻るスタックを表示します。バックスタックが変更されると、UI が更新され、関連するコンテンツが表示されます。バックスタックを表示するをご覧ください。- 必要に応じて、
NavDisplay
のシーン戦略を変更して、アダプティブ レイアウトとさまざまなプラットフォームをサポートします。
Navigation 3 の完全なソースコードは AOSP で確認できます。
Jetpack Navigation の改善
Navigation 3 は、元の Jetpack Navigation API を次の方法で改善しています。
- Compose との統合を簡素化
- バックスタックを完全に制御できる
- バックスタックから複数のデスティネーションを同時に読み取ることができるレイアウトを作成できるため、ウィンドウサイズやその他の入力の変化に適応できます。
Navigation 3 の原則と API 設計の選択肢について詳しくは、こちらのブログ投稿をご覧ください。
コードサンプル
レシピ リポジトリには、Navigation 3 の構成要素を使用して一般的なナビゲーションの問題を解決する方法の例が含まれています。