Nawigacja odnosi się do interakcji, które pozwalają użytkownikom przechodzić między różnymi elementami zawartości aplikacji, do nich docierać i wycofywać się z nich.
Komponent nawigacji w Androidzie Jetpack obejmuje bibliotekę nawigacji, wtyczkę Safe Args Gradle i narzędzia ułatwiające wdrożenie nawigacji po aplikacjach. Komponent Nawigacja obsługuje różne przypadki użycia nawigacji, od prostych kliknięć przycisków po bardziej złożone wzorce, takie jak paski aplikacji i szuflada nawigacji.
Kluczowych pojęć
W tabeli poniżej znajdziesz omówienie głównych pojęć związanych z nawigacją oraz głównych typów używanych do ich wdrażania.
Pomysł |
Cel |
Typ |
---|---|---|
Host |
Element interfejsu zawierający bieżące miejsce docelowe nawigacji. Oznacza to, że gdy użytkownik porusza się po aplikacji, aplikacja zmienia miejsca docelowe zarówno z hosta nawigacji, jak i z niego. |
|
Wykres |
Struktura danych definiująca wszystkie miejsca docelowe nawigacji w aplikacji i sposób ich łączenia. |
|
Kontroler |
Centralny koordynator do zarządzania nawigacją między miejscami docelowymi. Kontroler udostępnia metody nawigowania między miejscami docelowymi, obsługi precyzyjnych linków, zarządzania stosem wstecznym i nie tylko. |
|
Miejsce docelowe |
Węzeł na wykresie nawigacyjnym. Gdy użytkownik przejdzie do tego węzła, host wyświetli jego zawartość. |
Zwykle tworzony podczas tworzenia wykresu nawigacyjnego. |
Trasa |
Jednoznacznie identyfikuje miejsce docelowe i wszystkie wymagane do niego dane. Możesz korzystać z nawigacji za pomocą tras. Trasy prowadzą do miejsc docelowych. |
Dowolny typ danych możliwych do serializacji. |
Zalety i funkcje
Komponent Nawigacja ma wiele innych zalet i funkcji, w tym:
- Animacje i przejścia: udostępnia ustandaryzowane zasoby animacji i przejść.
- Precyzyjne linki: implementuje i obsługuje precyzyjne linki, które prowadzą użytkownika bezpośrednio do miejsca docelowego.
- Wzorce interfejsu: obsługa wzorców takich jak panele nawigacji i dolna nawigacja przy minimalnym nakładzie pracy.
- Bezpieczeństwo typu: obejmuje obsługę przesyłania danych między miejscami docelowymi z zabezpieczeniem typu.
- Obsługa ViewModel: włącza zakres zakresu
ViewModel
do wykresu nawigacyjnego, aby udostępniać dane związane z interfejsem między miejscami docelowymi wykresu. - Transakcje z fragmentem: w pełni obsługuje i obsługuje transakcje z fragmentami.
- Kopia zapasowa i tworzenie:domyślnie prawidłowo obsługuje działania związane z tworzeniem kopii zapasowej i tworzeniem kopii zapasowej.
Konfigurowanie środowiska
Aby uwzględnić w projekcie obsługę nawigacji, dodaj te zależności do pliku build.gradle
aplikacji:
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.4" // 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.4" // 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") }
Informacje o dodawaniu innych komponentów architektury do projektu znajdziesz w artykule Dodawanie komponentów do projektu.
Dalsze kroki
Więcej dokumentacji i zasobów związanych z komponentem Nawigacja znajdziesz w tych materiałach.
Szczegółowe przewodniki
Więcej informacji o implementowaniu hosta nawigacji i elementu NavController
, a także szczegółowych informacji na temat ich interakcji z interfejsem tworzenia wiadomości i innymi platformami interfejsu znajdziesz w tych przewodnikach:
- Utwórz kontroler nawigacji: określa, jak utworzyć
NavController
. - Utwórz wykres nawigacyjny: dowiedz się, jak utworzyć hosta nawigacji oraz wykres nawigacyjny.
- Nawigacja do miejsca docelowego: pokazuje, jak używać
NavController
do poruszania się między miejscami docelowymi na wykresie.
Ćwiczenia z programowania
- Nauka nawigacji w aplikacji Jetpack
- Fragmenty i komponent Nawigacja
- Tworzenie aplikacji adaptacyjnej za pomocą dynamicznej nawigacji
Filmy
- Nawigacja
- 10 sprawdzonych metod przechodzenia na jedno działanie
- Pojedyncza aktywność: dlaczego, kiedy i jak (Android Dev Summit 2018)
- Android Jetpack: zarządzanie nawigacją w interfejsie za pomocą kontrolera nawigacji (Google I/O 2018)