365連休

にわかのandroidとかの開発メモ。

Principles of navigationの意訳

developer.android.com

 

異なる画面とアプリ間のナビゲーションは、ユーザエクスペリエンスの中心である。 次の原則は、アプリ間で一貫性があり直観的なユーザエクスペリエンスの基準を設定する。 ナビゲーションコンポーネントは、既定でこれらの原則を実装し、アプリ間を移動する場合に、経験則とパターンでナビゲーションできるようにする。

 

注意:プロジェクトでナビゲーションコンポーネントを使用していなくても、アプリはこれらの設計原則に従う必要がある。

 

 

開始画面(宛先)の固定

全てのアプリは開始画面(宛先)が固定されている。これは、ユーザがランチャーからアプリを起動したときに表示される最初の画面である。この宛先は、"バック"ボタンでランチャーに戻ったにユーザが表示する最後の画面でもある。

例として次のひまわりアプリgithubで示す。

f:id:neet_rookie:20190902142201p:plain

図1:リスト画面は、ひまわりアプリの開始画面(宛先)。(意訳元から画像転載)
https://developer.android.com/guide/navigation/navigation-principles#fixed_start_destination

ランチャーからひまわりアプリを起動すると、ユーザが目にする最初の画面は"リスト画面"で、彼らの庭の植物リストである。 この画面はアプリを終了する前の最後の画面でもある。"リスト画面"から"バック"ボタンを押すとランチャーへ戻る。

 

注意:アプリには1度だけのセットアップやログイン画面がある場合がある。これらの条件付き画面は、ユーザが特定の状態の場合にのみ表示するため、開始画面(宛先)と見なすべきではない。

 

 

ナビゲーション状態は宛先スタックとして表される

アプリが最初に起動されると、新しいタスクEnが生成され、アプリに開始画面(宛先)が表示される。開始画面(宛先)はバックススタックの基礎宛先となり、ナビゲーション状態の基準となる。
スタックの上部は現在の画面で、スタックの他の宛先は、履歴を表す。 バックスタックの下部はアプリの開始画面(宛先)がある。 バックスタックに対する操作は、スタックの上にプッシュするか、スタックの上からポップされるかである。宛先に移動すると、その宛先がスタックの上にプッシュされる。
ナビゲーションコンポーネント(En 意訳)はバックスタック内の順序を管理するが、バックスタックを自身で管理することもできる。

 

 

タスク内の"アップ"と"バック"は同様である

f:id:neet_rookie:20190902170028p:plain

図2:"アップ"と"バック"ボタン。(意訳元から画像転載)
https://developer.android.com/guide/navigation/navigation-principles#up_and_back_are_identical_within_your_apps_task

"バック"ボタンは、画面の下部にあるシステムナビゲーションバーに表示され、ユーザが使用した画面の履歴を遡ってナビゲーションする。"バック"ボタンを押すと、現在の宛先がバックスタックの上からポップされ、1つ前の宛先へ移動する。 "アップ"ボタンは画面上部のアプリバーに表示される。アプリのタスク内では"アップ"と"バック"は同じように振る舞う。

 

 

"アップ"ボタンはアプリを終了しない

ユーザがアプリの開始画面(宛先)にいる場合、"アップ"ボタンはアプリを終了しないため表示されない。ただし、"バック"ボタンは表示されていてアプリを終了できる。
別のアプリのタスクのディープリンクを使用してあなたのアプリを起動すると、"アップ"はディープリンクEnをトリガーしたアプリではなく、シミュレートされたバックスタックで、ユーザをあなたのアプリのタスクに戻す。

 

 

ディープリンクは手動ナビゲーションをシミュレートする

ディープリンクでも手動ナビゲーションでも、"アップ"ボタンを使用して宛先を遡り開始位置へ戻ることができる。 アプリのタスク内の宛先にディープリンクがされると、既存のタスクのバックスタックが削除され、ディープリンク先のバックスタックに置き換えられる。
例として再びひまわりアプリを使用して、ランチャーからアプリを起動しリンゴの詳細画面へ移動したと仮定する。画面の履歴を見てみると、バックスタックの最上位の画面がAppleの詳細画面であることが分かる。

f:id:neet_rookie:20190902175027p:plain

図3:ひまわりアプリのユーザナビゲーション(左)とバックスタックの結果(右)。(意訳元から画像転載)
https://developer.android.com/guide/navigation/navigation-principles#deep-link

この時点で、ユーザはホームボタンをタップしてアプリをバックグラウンドへ追いやる。次に、ユーザが植物の名前でアプリの詳細画面を直接起動するディープリンク機能があるとして、このディープリンクを使用してアプリを開くと、図4に示すように図3のバックスタックを完全に置き換える。

 

f:id:neet_rookie:20190902175235p:plain

図4:ディープリンクによって、ひまわりアプリのバックスタックが置き換る。(意訳元から画像転載)
https://developer.android.com/guide/navigation/navigation-principles#deep-link

ひまわりのバックスタックは、最上部にアボカドを持つバックスタックに置き換えられていることに注意する。開始画面(宛先)であるマイガーデン画面もバックスタックに追加されている。
生成されるバックスタックは現実的で無ければならない。これは、アプリを操作してナビゲートされるバックスタックと等しく無ければならない。
元のひまわりのバックスタックは、ユーザがアップルの詳細画面にあったことを含め完全に削除されている。

 

ナビゲーションコンポーネントディープリンクをサポートEnし、ナビゲーショングラフ内の任意の宛先にリンクする時、リアルなバックスタックを再生成する。

 

 

 

※上記はhttps://developer.android.com/guide/navigation/navigation-principlesの意訳である

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における頒布行為にあたると解釈している。