Gezinme

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ı.

NavGraph

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.

NavController

Hedef

Gezinme grafiğindeki bir düğüm. Kullanıcı bu düğüme gittiğinde ana makine içeriğini gösterir.

NavDestination

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:

Codelab uygulamaları

Videolar

Örnekler