Navigasi adalah interaksi yang memungkinkan pengguna melakukan navigasi di, ke dalam, dan ke luar dari berbagai bagian konten dalam aplikasi Anda.
Komponen Navigation Android Jetpack mencakup library Navigation, plugin Safe Args Gradle, dan alat untuk membantu Anda menerapkan navigasi aplikasi. Komponen Navigation menangani beragam kasus penggunaan navigasi, dari klik tombol yang sederhana hingga pola yang lebih kompleks, seperti panel aplikasi dan panel navigasi.
Konsep utama
Tabel berikut memberikan ringkasan tentang konsep utama dalam navigasi dan jenis utama yang Anda gunakan untuk menerapkannya.
Konsep |
Tujuan |
Jenis |
---|---|---|
Host |
Elemen UI yang berisi tujuan navigasi saat ini. Artinya, saat pengguna menavigasi aplikasi, aplikasi pada dasarnya menukar tujuan masuk dan keluar dari host navigasi. |
|
Grafik |
Struktur data yang mendefinisikan semua tujuan navigasi dalam aplikasi dan cara tujuan tersebut terhubung. |
|
Pengontrol |
Koordinator pusat untuk mengelola navigasi antar-tujuan. Pengontrol memberikan metode untuk bernavigasi antar-tujuan, menangani deep link, mengelola data sebelumnya, dan banyak lagi. |
|
Halaman tujuan |
Node dalam grafik navigasi. Saat pengguna membuka node ini, host akan menampilkan kontennya. |
Biasanya dibuat saat membuat grafik navigasi. |
Rute |
Mengidentifikasi tujuan dan data apa pun yang diperlukan secara unik. Anda dapat menavigasi menggunakan rute. Rute akan membawa Anda ke tujuan. |
Jenis data apa pun yang dapat diserialisasi. |
Manfaat dan fitur
Komponen Navigation memberikan sejumlah manfaat dan fitur lainnya, termasuk yang berikut:
- Animasi dan transisi: Menyediakan resource standar untuk animasi dan transisi.
- Deep linking: Menerapkan dan menangani deep link yang mengarahkan pengguna langsung ke tujuan.
- Pola UI: Mendukung pola seperti panel navigasi dan navigasi bawah dengan tugas tambahan minimal.
- Keamanan jenis: Mencakup dukungan untuk meneruskan data antar-tujuan dengan keamanan jenis.
- Dukungan ViewModel: Memungkinkan pencakupan
ViewModel
ke grafik navigasi untuk membagikan data terkait UI antar-tujuan grafik. - Transaksi fragmen: Mendukung dan menangani transaksi fragmen sepenuhnya.
- Kembali dan ke atas: Menangani tindakan kembali dan ke atas dengan benar secara default.
Menyiapkan lingkungan
Untuk menyertakan dukungan navigasi dalam project Anda, tambahkan dependensi berikut ke
file build.gradle
aplikasi Anda:
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.9" // 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" }
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.9" // 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") }
Untuk informasi tentang menambahkan komponen arsitektur lainnya ke project Anda, lihat Menambahkan komponen ke project Anda.
Langkah berikutnya
Untuk dokumentasi dan referensi lain terkait dengan komponen Navigation, lihat referensi berikut ini.
Panduan mendetail
Untuk informasi selengkapnya tentang cara menerapkan host navigasi dan NavController
,
serta detail cara berinteraksi dengan Compose dan framework UI lainnya, lihat
panduan berikut:
- Membuat pengontrol navigasi: Menguraikan cara membuat
NavController
. - Membuat grafik navigasi: Memerinci cara membuat host navigasi dan grafik navigasi.
- Menavigasi ke tujuan: Menunjukkan cara menggunakan
NavController
untuk berpindah antar-tujuan dalam grafik Anda.
Codelab
- Mempelajari Navigasi Jetpack
- Fragmen dan Komponen Navigasi
- Membangun aplikasi adaptif dengan navigasi dinamis
Video
- Menavigasi navigasi
- 10 praktik terbaik untuk berpindah ke aktivitas tunggal
- Aktivitas tunggal: Mengapa, kapan, dan bagaimana (Android Dev Summit '18)
- Android Jetpack: Mengelola navigasi UI dengan pengontrol navigasi (Google I/O '18)
Contoh
Jetsnack is a sample snack ordering app built with Jetpack Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This Jetcaster is a sample podcast app, built with Jetpack Compose. The goal of the sample is to showcase building with Compose across multiple form factors (mobile, TV, and Wear) and full featured architecture.
To try out this sample app, use the latest Jetchat is a sample chat app built with Jetpack Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This sample These samples showcase different architectural approaches to developing Android apps. In its different branches you'll find the same app (a TODO app) implemented with small differences.
In this branch you'll find:
User Interface built with Jetpack Jetnews is a sample news reading app, built with Jetpack Compose. The goal of the sample is to showcase the current UI capabilities of Compose.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository Learn how this app was designed and built in the design case study, architecture learning journey and modularization learning journey.
This is the repository for the Now in Android app. It is a work in progress 🚧.
Now in Android is a fully functionalJetsnack sample
Jetcaster sample 🎙️
Jetchat sample
Architecture
Jetnews sample
Now in Android App