導覽是指允許使用者在應用程式的不同內容片段中,自由進行瀏覽、進入及退出的互動方式。
Android Jetpack 的 Navigation 元件包含 Navigation 程式庫、Safe Args Gradle 外掛程式,以及協助您實作應用程式導覽的工具。導覽元件處理多種導覽用途,包括簡單的按鈕點擊,或較為複雜的應用程式列與導覽匣等模式。
核心概念
下表概略說明導覽中的重要概念,以及用於實作這些概念的主要類型。
概念 |
目的 |
類型 |
---|---|---|
主機 |
包含目前導覽目的地的 UI 元素。也就是說,當使用者瀏覽應用程式時,應用程式基本上會來回切換導覽主機的目的地。 |
|
圖表 |
定義應用程式中所有導覽目的地及其連結方式的資料結構。 |
|
遙控器 |
用於管理目的地之間的導覽的中央協調人員。控制器提供在目的地之間瀏覽的方法、處理深層連結、管理返回堆疊等。 |
|
到達網頁 |
導覽圖中的節點。使用者前往這個節點時,主機會顯示其內容。 |
通常在建構導覽圖時建立。 |
路線 |
用於識別目的地及其所需的任何資料。 您可以使用路徑進行導航。「路線」會帶你前往目的地。 |
任何可序列化的資料類型。 |
優點與功能
Navigation 元件提供許多其他優點和功能,包括:
- 動畫和轉場效果:提供動畫和轉場效果的標準化資源。
- 深層連結:實作並處理可將使用者直接導向目的地的深層連結。
- UI 模式:只需極少的額外工作,就能支援導覽匣和底部導覽等模式。
- 類型安全:包含透過類型安全在目的地之間傳遞資料的支援。
- ViewModel 支援:允許將
ViewModel
的範圍限定為導覽圖,以便在圖表的目的地之間共用 UI 相關資料。 - 片段交易:完整支援及處理片段交易。
- 備份和備份:根據預設,正確處理備份和備份動作。
設定環境
如要在專案中加入導覽支援功能,請將下列依附元件新增至應用程式的 build.gradle
檔案:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.8.4" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.4" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
如要瞭解如何將其他架構元件新增至專案,請參閱「在專案中新增元件」。
後續步驟
如需更多有關 Navigation 元件的說明文件和資源,請參閱下列資源。
詳細指南
如要進一步瞭解如何實作導覽主機和 NavController
,以及這兩者與 Compose 和其他 UI 架構互動的方式,請參閱下列指南:
程式碼研究室
影片
- 導覽功能
- 遷移至單一活動的 10 項最佳做法
- 單一活動:原因、時機和方式 (2018 年 Android 開發人員高峰會)
- Android Jetpack:使用導覽控制器管理 UI 導覽 (2018 年 Google I/O 大會)