Điều hướng (navigation) là các tương tác cho phép người dùng di chuyển qua lại, vào và ra khỏi các phần nội dung khác nhau trong ứng dụng.
Thành phần Điều hướng (Navigation) của Android Jetpack gồm có Thư viện điều hướng, trình bổ trợ Safe Args Gradle và công cụ giúp bạn triển khai quy trình điều hướng trong ứng dụng. Thành phần Điều hướng xử lý nhiều trường hợp sử dụng điều hướng, từ nhấp nút đơn giản đến các loại hình phức tạp hơn, chẳng hạn như thanh ứng dụng và ngăn điều hướng.
Khái niệm chính
Bảng sau đây cung cấp thông tin tổng quan về các khái niệm chính trong thành phần điều hướng và các loại chính mà bạn dùng để triển khai các khái niệm đó.
Ý tưởng |
Mục đích |
Loại |
---|---|---|
Thành phần lưu trữ |
Một phần tử trên giao diện người dùng chứa đích đến điều hướng hiện tại. Tức là khi người dùng di chuyển trong một ứng dụng, về cơ bản, ứng dụng đó sẽ hoán đổi đích đến trong và ngoài thành phần lưu trữ điều hướng đó. |
|
Biểu đồ |
Một cấu trúc dữ liệu xác định tất cả đích đến điều hướng trong ứng dụng và cách kết nối các đích đến này với nhau. |
|
Trình điều khiển |
Trình điều phối trung tâm để quản lý việc điều hướng giữa các đích đến. Trình điều khiển này cung cấp các phương thức để điều hướng giữa các đích đến, xử lý đường liên kết sâu, quản lý ngăn xếp lui, v.v. |
|
Đích đến |
Một nút trong biểu đồ điều hướng. Khi người dùng chuyển đến nút này, máy chủ lưu trữ sẽ hiển thị nội dung của nó. |
Thường được tạo khi tạo biểu đồ điều hướng. |
Hành trình |
Xác định duy nhất một đích đến và mọi dữ liệu mà đích đến đó yêu cầu. Bạn có thể đi theo chỉ dẫn bằng tuyến đường. Tuyến đường sẽ đưa bạn tới điểm đến. |
Mọi loại dữ liệu có thể chuyển đổi tuần tự. |
Lợi ích và tính năng
Thành phần Điều hướng mang lại một số lợi ích và tính năng khác như:
- Ảnh động và hiệu ứng chuyển đổi: Cung cấp tài nguyên chuẩn hoá để tạo ảnh động và hiệu ứng chuyển đổi.
- Đường liên kết sâu: Triển khai và xử lý các đường liên kết sâu đưa người dùng đến thẳng một đích đến.
- Mẫu giao diện người dùng: Hỗ trợ các mẫu như ngăn điều hướng và thành phần điều hướng ở dưới cùng giúp giảm thiểu công việc cần làm.
- An toàn về kiểu: Hỗ trợ việc truyền dữ liệu giữa các đích đến có an toàn về kiểu.
- Hỗ trợ ViewModel: Bật tính năng xác định phạm vi
ViewModel
cho một biểu đồ điều hướng để chia sẻ dữ liệu liên quan đến giao diện người dùng giữa các đích đến trong biểu đồ. - Giao dịch mảnh (Fragment transactions): Hỗ trợ và xử lý đầy đủ các giao dịch mảnh.
- Quay lại và di chuyển lên: Xử lý chính xác các thao tác quay lại và di chuyển lên theo mặc định.
Thiết lập môi trường
Để đưa tính năng hỗ trợ điều hướng vào dự án của bạn, hãy thêm các phần phụ thuộc sau vào tệp build.gradle
trong ứng dụng:
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.5" // 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.5" // 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") }
Để biết thông tin về việc thêm các thành phần cấu trúc khác vào dự án, hãy xem nội dung Thêm các thành phần vào dự án.
Các bước tiếp theo
Để tìm hiểu thêm tài liệu và tài nguyên tham khảo liên quan đến thành phần điều hướng, hãy xem các tài nguyên sau.
Hướng dẫn chi tiết
Để biết thêm thông tin về cách triển khai thành phần lưu trữ điều hướng và NavController
, cũng như thông tin cụ thể về cách các thành phần này tương tác với Compose và những khung giao diện người dùng khác, hãy xem các hướng dẫn sau:
- Tạo trình một điều khiển điều hướng: Trình bày cách tạo một
NavController
. - Tạo biểu đồ điều hướng: Thông tin cụ thể về cách tạo một thành phần lưu trữ điều hướng và biểu đồ điều hướng.
- Điều hướng đến một đích đến: Minh hoạ cách sử dụng
NavController
để điều hướng giữa các đích đến trong biểu đồ.
Lớp học lập trình
- Tìm hiểu về thành phần Điều hướng của Jetpack
- Mảnh và thành phần điều hướng
- Tạo ứng dụng thích ứng bằng tính năng điều hướng động
Video
- Chỉ dẫn điều hướng
- 10 phương pháp hay nhất để di chuyển sang một hoạt động duy nhất
- Một hoạt động: Lý do, thời điểm và cách thức (Hội nghị Nhà phát triển Android 2018)
- Android Jetpack: Quản lý hoạt động điều hướng giao diện người dùng bằng Trình điều khiển thành phần điều hướng (Google I/O 2018)