Gezinme, kullanıcıların uygulamanızdaki farklı içeriklerde gezinmesini, içeriklere girmesini ve içeriklerden çıkmasını sağlayan etkileşimleri ifade eder.
Android Jetpack'in Navigation bileşeni, Navigation kitaplığı, Safe Args Gradle eklentisi ve uygulama gezinmesini uygulamanıza yardımcı olacak araçları içerir. Gezinme bileşeni; basit düğme tıklamalarından uygulama çubukları ve gezinme çekmecesi gibi daha karmaşık kalıplara kadar çeşitli gezinme kullanım alanlarını ele alır.
Temel kavramlar
Aşağıdaki tabloda, gezinmeyle ilgili temel kavramlara ve bunları uygulamak için kullandığınız ana türlere genel bir bakış sunulmaktadır.
Konsept |
Amaç |
Tür |
|---|---|---|
Ana makine |
Mevcut gezinme hedefini içeren bir kullanıcı arayüzü öğesi. Yani bir kullanıcı uygulamada gezinirken uygulama, hedefleri navigasyon ana bilgisayarında değiştirir. |
|
Grafik |
Uygulamadaki tüm gezinme hedeflerini ve bunların birbirine nasıl bağlandığını tanımlayan bir veri yapısı. |
|
Alan Kontrolcüsü |
Hedefler arasında gezinmeyi yönetmek için kullanılan merkezi koordinatör. Denetleyici, hedefler arasında gezinme, derin bağlantıları işleme, geri yığını yönetme ve daha fazlası için yöntemler sunar. |
|
Hedef |
Gezinme grafiğindeki bir düğüm. Kullanıcı bu düğüme gittiğinde ana makine içeriğini gösterir. |
Genellikle gezinme grafiği oluşturulurken oluşturulur. |
Rota |
Bir hedefi ve bu hedef için gerekli verileri benzersiz şekilde tanımlar. Rotaları kullanarak gezinebilirsiniz. Rotalar sizi varış noktalarına götürür. |
Serileştirilebilir tüm veri türleri. |
Avantajlar ve özellikler
Gezinme bileşeni, aşağıdakiler de dahil olmak üzere çeşitli avantajlar ve özellikler sunar:
- Animasyonlar ve geçişler: Animasyonlar ve geçişler için standartlaştırılmış kaynaklar sağlar.
- Derin bağlantı: Kullanıcıyı doğrudan bir hedefe yönlendiren derin bağlantıları uygular ve işler.
- Kullanıcı arayüzü kalıpları: Gezinme çekmeceleri ve alt gezinme gibi kalıpları minimum ek çalışmayla destekler.
- Tip güvenliği: Hedefler arasında tip güvenliği ile veri aktarma desteği içerir.
- ViewModel desteği: Bir
ViewModel'ın, grafik hedefleri arasında kullanıcı arayüzüyle ilgili verileri paylaşmak için bir gezinme grafiğiyle kapsamlandırılmasını sağlar. - Parça işlemleri: Parça işlemlerini tam olarak destekler ve işler.
- Geri ve yukarı: Geri ve yukarı işlemlerini varsayılan olarak doğru şekilde gerçekleştirir.
Çerçeve seçenekleri
Navigation bileşeni, uygulamanızın kullanıcı arayüzü mimarisine bağlı olarak navigasyon grafiğinizi uygulamak için iki temel çerçeveyi destekler:
- Compose: Uygulamanız tamamen Jetpack Compose ile oluşturulmuşsa Navigation Compose'u kullanın. Grafiğinizdeki hedefler composable'dır.
- Parçalar: Uygulamanızda Görünümler veya Görünümler ile Compose'un bir karışımı kullanılıyorsa parçaya dayalı gezinme bileşenini kullanın. Grafiğinizdeki hedefler, standart görünümleri, içerik oluşturmayı veya her ikisinin bir kombinasyonunu barındırabilen parçalardır.
Views'dan Compose'a geçen uygulamalar için önerilen strateji, tek tek ekranları Compose'a dönüştürürken parçaya dayalı Navigation bileşenini kullanmaya devam etmektir. Tüm parçalar composable'larla değiştirildikten sonra gezinme grafiğini Navigation Compose'a taşıyabilirsiniz.
Ortamınızı ayarlama
Projenize gezinme desteği eklemek için uygulamanızın build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:
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.9.8" // 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.9.8" // 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") }
Projenize diğer mimari bileşenleri ekleme hakkında bilgi edinmek için Projenize bileşen ekleme başlıklı makaleyi inceleyin.
Sonraki adımlar
Navigation bileşeniyle ilgili daha fazla doküman ve kaynak için aşağıdaki kaynaklara bakın.
Ayrıntılı rehberler
Navigasyon ana makinesini ve NavController'yı uygulama, ayrıca bunların Compose ve diğer kullanıcı arayüzü çerçeveleriyle etkileşimi hakkında daha fazla bilgi için aşağıdaki kılavuzlara bakın:
- Gezinme denetleyicisi oluşturma:
NavControlleroluşturma adımlarını açıklar. - Gezinme grafiğinizi oluşturun: Gezinme ana makinesi ve gezinme grafiği oluşturma hakkında ayrıntılı bilgi verir.
- Hedefe gitme: Grafiğinizdeki hedefler arasında geçiş yapmak için
NavControllernasıl kullanılacağını gösterir.
Codelab uygulamaları
- Jetpack Navigation'ı öğrenme
- Parçalar ve Gezinme Bileşeni
- Dinamik gezinme özelliğine sahip uyarlanabilir bir uygulama oluşturma
Videolar
- Gezinme ile ilgili bilgiler
- Tek bir etkinliğe geçişle ilgili en iyi 10 uygulama
- Tek etkinlik: Neden, ne zaman ve nasıl (Android Dev Summit 2018)
- Android Jetpack: Manage UI navigation with navigation controller (Google I/O '18)