ナビゲーションとは、ユーザがアプリ上で移動または戻る操作を指す。 Android Jetpachのナビゲーションコンポーネントは、単純なボタンクリックではなく、アプリバーやナビゲーションドロワーなどの複雑なナビゲーションの実装を提供する。 ナビゲーションコンポーネントは、確立された原則(En 意訳)を守ることで、一貫性のある予測可能なユーザエクスペリエンスを保証する。
ナビゲーションコンポーネントは次の3つのキーパーツで構成される。
- ナビゲーショングラフ:全てのナビゲーション関連情報を含む単体のXMLリソース。宛先と呼ばれるアプリ内の全ての各コンテンツ領域が含まれ、ユーザが通り抜ける経路と同様である。
- NavHost:ナビゲーショングラフから宛先を表示する空のコンテナ。ナビゲーションコンポーネントにはNavHostの実装した既定のNavHostFragment(Reference)が定義され、それはフラグメントに宛先を表示する。
- NavController:NavHost内のナビゲーションを管理するオブジェクト。NavControllerは、ユーザがアプリ全体を移動するにつれて、宛先コンテンツの切り替えを調整する。
アプリ内を移動する場合は、ナビゲーショングラフ または 特定の宛先をNavControllerへ伝える。NavControllerが適切な宛先をNavHostに表示する。
ナビゲーションコンポーネントには他にも利点がある。
- フラグメントトランザクションの処理。
- 既定の"アップ"・"バック"操作の処理。
- 標準化されたアニメーションと遷移のリソースの提供。
- ディープリンクの実装と処理。
- 最小限の作業でナビゲーションUIパターン(ナビゲーションドロワーと下部ナビゲーション)を利用できる。
- Safe ArgsEn - Gradleプラグインは宛先間の遷移やデータの受け渡しの安全性を提供する。
- ViewModelのサポート - ViewModelをナビゲーショングラフにスコープ設定して、グラフの宛先間でUI関連データを共有できる。
さらに、Android StudioのNavigation Editorナビゲーションエディタを使用してナビゲーショングラフを表示・編集することができる。
ヒント: ナビゲーションエディタはAndroid Studio3.3以降に含まれている。
Next Steps
ナビゲーションコンポーネントに関する詳しいドキュメントとリソースの関係については次を参照すること。
Getting started
Further topics
- Principles of Navigation ナビゲーションの原則 En 意訳
- Design for different form factors 異なるフォームファクターの設計 En
- Design navigation graphs ナビゲーショングラフのデザイン En
- Nested graphs ネストされたグラフ En
- Global actions グローバルアクション En
- Conditional navigation 条件付きナビゲーション En
- Pass data between destinations 宛先へデータを渡す En
- Create a deep link for a destination 宛先のディープリンクを作成する En
- Animate transitions between destinations 遷移をアニメーションする En
- Update UI components with NavigationUI ナビゲーションUIを使用してUIコンポーネントを更新する En
- Create swipe views with tabs タブを使用してスワイプビューを作成する En
- Interact programmatically with the Navigation component プログラムによる対話 En
- Test navigation ナビゲーションのテスト En
- Add new destination types 新しい宛先タイプの追加 En
- Provide custom back navigation カスタムバックナビゲーションを提供する("戻る"を制御する?) En
- Migrate to the Navigation component ナビゲーションコンポーネントへ移行する En
Samples
Codelabs
- Navigation codelab ナビゲーション/コードラボ codelabs
Blog posts
- LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case スナックバー、ナビゲーション、その他のイベントとライブデータ(シングルライブイベントの場合) En
Videos
- 10 Best Practices for Moving to a Single Activity YouTube
- Single Activity: Why, When, and How (Android Dev Summit '18) YouTube
- Android Jetpack: manage UI navigation with Navigation Controller (Google I/O '18) YouTube
※上記はhttps://developer.android.com/guide/navigation意訳である
Android開発者向けドキュメントを意訳してみる。 - 365連休
意訳元https://developer.android.com/のライセンス解釈
ソースコードから抽出されたドキュメントやコードはAndroid Open Source Projectの優先ライセンスであるApache 2.0 licenseが適用され、それ以外のコンテンツはCC BY 2.5が適用されている。
よって、ページ全体の意訳についてはCC BY 2.5における翻案行為、ページ内のコード転載についてはApache 2.0 licenseにおける頒布行為にあたると解釈している。