導覽是指允許使用者在應用程式的不同內容片段中,自由進行瀏覽、進入及退出的互動方式。
Android Jetpack 的 Navigation 元件包含 Navigation 程式庫、Safe Args Gradle 外掛程式,以及可協助您實作應用程式導覽功能的工具。Navigation 元件可處理各種導覽用途,包括簡單的按鈕點擊,或較為複雜的應用程式列和導覽匣等模式。
核心概念
下表概略說明導覽中的關鍵概念,以及用來實作這些概念的主要類型。
概念 |
目的 |
類型 |
---|---|---|
舉辦派對 |
包含目前導覽目的地的 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.6" // 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.6" // 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 導覽 (Google I/O 2018)