Nawigacja to interakcje, które umożliwiają użytkownikom poruszanie się po różnych elementach treści w aplikacji, wchodzenie w nie i z nich wychodzenie.
Komponent Nawigacja w Jetpacku na Androida zawiera bibliotekę Nawigacja, wtyczkę Gradle Safe Args oraz narzędzia ułatwiające implementację nawigacji w aplikacji. 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 schowki nawigacyjne.
Kluczowych pojęć
W tabeli poniżej znajdziesz omówienie najważniejszych pojęć dotyczących nawigacji oraz ich głównych typów.
Pomysł |
Cel |
Typ |
---|---|---|
Zorganizuj |
Element UI zawierający bieżący cel nawigacji. Oznacza to, że gdy użytkownik przemieszcza się po aplikacji, aplikacja zasadniczo zamienia miejsca docelowe w gospodarzu nawigacji. |
|
Wykres |
Struktura danych, która definiuje wszystkie miejsca docelowe nawigacji w aplikacji i sposób ich łączenia. |
|
Kontroler |
Centralny koordynator zarządzania nawigacją między miejscami docelowymi. Kontroler udostępnia metody nawigacji między miejscami docelowymi, obsługi precyzyjnych linków i zarządzania stosem wstecz. |
|
Miejsce docelowe |
Węzeł w grafie nawigacji. Gdy użytkownik przejdzie do tego węzła, host wyświetli jego zawartość. |
Zwykle tworzone podczas tworzenia grafu nawigacyjnego. |
Trasa |
jednoznacznie identyfikuje miejsce docelowe i wszystkie wymagane dane; Możesz nawigować za pomocą tras. Trasy prowadzą do miejsc docelowych. |
dowolny typ danych możliwy do serializacji; |
Zalety i funkcje
Element Nawigacja zapewnia też wiele innych korzyści i funkcji, takich jak:
- Animacje i przejścia: udostępnia standardowe zasoby do tworzenia animacji i przejść.
- Precyzyjne linki: implementują i obsługują precyzyjne linki, które kierują użytkownika bezpośrednio do miejsca docelowego.
- Wzorce interfejsu: obsługa wzorów takich jak menu nawigacyjne i dolna nawigacja przy minimalnym dodatkowym nakładzie pracy.
- Bezpieczeństwo typów: obejmuje obsługę przekazywania danych między miejscami docelowymi z bezpieczeństwem typów.
- Obsługa ViewModel: umożliwia ograniczenie zakresu działania
ViewModel
do wykresu nawigacyjnego, aby udostępniać dane związane z interfejsem między miejscami docelowymi wykresu. - Transakcje fragmentów: pełna obsługa transakcji fragmentów.
- Wstecz i w górę: domyślnie obsługuje działania wstecz i w górę.
Konfigurowanie środowiska
Aby uwzględnić obsługę nawigacji w projekcie, dodaj do pliku build.gradle
aplikacji te zależności:
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") }
Informacje o dodawaniu do projektu innych komponentów architektury znajdziesz w artykule Dodawanie komponentów do projektu.
Dalsze kroki
Więcej dokumentacji i materiałów związanych ze składnikiem Nawigacja znajdziesz w tych zasobach.
Szczegółowe przewodniki
Więcej informacji o wdrażaniu hosta nawigacji i NavController
, a także szczegółowe informacje o ich interakcji z Compose i innymi frameworkami UI znajdziesz w tych przewodnikach:
- Tworzenie kontrolera nawigacji: przedstawia sposób tworzenia
NavController
. - Utwórz wykres nawigacji: szczegółowe informacje o tym, jak utworzyć hosta nawigacji i wykres nawigacji.
- Przejdź do miejsca docelowego: pokazuje, jak za pomocą
NavController
przechodzić między miejscami docelowymi na wykresie.
Ćwiczenia z programowania
- Więcej informacji o Jetpack Navigation
- Fragmenty i komponent Nawigacja
- Tworzenie aplikacji dostosowującej się do ekranu z dynamiczną nawigacją
Filmy
- Nawigacja
- 10 sprawdzonych metod przejścia na jedną aktywność
- Pojedyncza aktywność: dlaczego, kiedy i jak (Android Dev Summit '18)
- Android Jetpack: zarządzanie nawigacją w interfejsie za pomocą kontrolera nawigacji (Google I/O 2018)
Próbki
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 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 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 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 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 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 functionalJetcaster sample 🎙️
Jetnews sample
Jetsnack sample
Architecture
Jetchat sample
Now in Android App