Navigationとはなんなのか【AndroidStudio】

 昨日の続き、

(テンプレート)BasicActivityに含まれるナビゲーション(?)ってやつを見つけたので

何者なのかをザックリ調べてみました。


ナビゲーション

ナビゲーションとは、ユーザーがアプリ内のさまざまなコンテンツ間を移動する操作を指します。Android Jetpack の Navigation コンポーネントは、単純なボタンクリックから、アプリバーやナビゲーション ドロワーなどの複雑なパターンまで、さまざまなナビゲーションを実装するのに役立ちます。また、Navigation コンポーネントは、確立された原則のセットうことにより、一貫性のある予測しやすいユーザー エクスペリエンスを保証します。

https://developer.android.com/guide/navigation?hl=ja


公式ドキュメントを読んだざっくりの理解。

ナビゲーションを使うことで、画面(Framgment)の遷移を管理することができる。

ナビゲーションは3つの要素で構成されていて、

・Navigation Graph(ナビゲーショングラフ)

 →ナビゲーションに関連した情報を集約したXMLファイル

・NavHostFragment(ナビゲーションホストフラグメント)

 →ナビゲーションされた情報を表示するための元(フレームみたいなもの?)

・NavControlloer(ナビゲーションコントローラー)

 →Navigationをコード上で使用するためのクラス

  NavControllerを使って遷移時の引数の受け渡しなど制御が可能。


画面遷移部分を包括して管理、実装できる機能になっているみたいで

Navigationを使用することで画面のデザインから、各画面への遷移を最小限のプログラムで実装し、イメージを作ることが非常に簡単になるのかなと感じた。

 ※モックアップっていうのかな?

また、画面遷移時のアニメーションについてもこのナビゲーションを使って実装ができるとのこと(詳しくはまた今度調べてみます。)


いろいろ文献を見ると、Activityをたくさん作って、画面遷移をさせることはもちろん可能だけど

似たようなレイアウトや遷移時のアニメーション管理をしたい場合にはFragmentを用いて

Navigationによる画面遷移(引数の受け渡し)を実装するのが今は主流なのかな。

(歴史的には、画面ごとにActivityを作って遷移→Activity内にFragmentを配置して画面表示の自由度を拡張→Navigationを使用して表示要素の画面遷移やアニメーションを管理できるようになった。って感じの理解)


一通り眺めた感想としては、機能を重視する業務用のアプリケーションであればアニメーション設定などは不要だろうから、Navigationを使用するメリットはパッと考え付かないけど、一般向けのアプリケーションとなるとUIに関する部分は重要になるのでアニメーション管理などNavigationを利用するメリットはより大きくなるんだろうなぁって感じました。


正確な理解は実際に手を動かしながら深めていきたいと思います。

そろそろ実際に手を動かしながらアプリを作ってみよかな。


以上、本日の記録。


コメント

このブログの人気の投稿

Activity上に配置されたToolbarをFragment上から変更し、イベントを拾う方法【AndroidStudio】

AlertDialogのボタンをカスタマイズする【AndroidStudio】

レイアウトファイル上にIDが重複している場合の検索と、その有用性について【AndroidStudio】