ナビゲーション 3

Navigation 3 は、Compose と連携するように設計された新しいナビゲーション ライブラリです。Navigation 3 を使用すると、バックスタックを完全に制御でき、複数のデスティネーションを起点または終点とするナビゲーションがリストアイテムの追加や削除と同じくらい簡単になります。このライブラリは、次の機能を提供することで、柔軟なアプリ ナビゲーション システムを作成します。

  • バックスタックをモデル化するための規則。バックスタックの各エントリは、ユーザーがナビゲートしたコンテンツを表します。
  • バックスタックの変更(アニメーションを含む)に応じて自動的に更新される UI
  • バックスタック内のアイテムのスコープ。アイテムがバックスタックにある間、状態を保持できます。
  • 複数のデスティネーションを同時に表示し、レイアウトをシームレスに切り替えられるアダプティブ レイアウト システム
  • コンテンツが親レイアウト(メタデータ)と通信するためのメカニズム

大まかには、次の方法で Navigation 3 を実装します。

  1. アプリ内でユーザーがナビゲート可能なコンテンツをそれぞれ一意のキーで定義し、そのキーをコンテンツに解決する関数を追加します。キーをコンテンツに解決するをご覧ください。
  2. ユーザーがアプリ内を移動するたびにキーがプッシュされたり削除されたりするバックスタックを作成します。バックスタックを作成するをご覧ください。
  3. NavDisplay を使用して、アプリのバックスタックを表示します。バックスタックが変更されるたびに、UI を更新して関連するコンテンツを表示します。バックスタックを表示するをご覧ください。
  4. 必要に応じて NavDisplayシーン戦略を変更して、アダプティブ レイアウトとさまざまなプラットフォームをサポートします。

Navigation 3 の完全なソースコードは AOSP で確認できます。

Jetpack Navigation の改善

Navigation 3 では、元の Jetpack Navigation API が次のように改善されています。

  • Compose との統合を簡素化
  • デベロッパーによるバックスタックの完全制御が可能に
  • バックスタックから複数のデスティネーションを同時に読み取れるレイアウトの作成を可能にし、ウィンドウ サイズやその他の入力の変化に適応できるようにする

Navigation 3 の原則と API 設計の選択肢について詳しくは、こちらのブログ投稿をご覧ください。

コードサンプル

レシピ リポジトリには、Navigation 3 の構成要素を使用して一般的なナビゲーションの課題を解決する方法の例が含まれています。