Course Content
-
Навигация в Android через Navigation Architecture Component
- Введение в Navigation Architecture Component
- Описание проекта
- Описание Navigation Architecture Component
- Знакомство с Navigation Graph
- Создание перехода
- Реализация навигации в приложении
- Изменение анимации перехода
- Передача аргументов между экранами
- Type-safe аргументы( В разработке)
- Навигация через actions (В разработке)
- Реализация deeplinks (В разработке)
Знакомство с Navigation Graph
Назначение или Destinations
При использовании Navigation Component используется концепция destination ну или назначение. По сути это ваш фрагмент или активити на которые пользователь должен перейти.
Граф переходов или Navigation Graph
Navigation graph или граф переходов является новым типом ресурсов и представляет собой все сценарии переходов между экранами Android Studio позволяет визуализировать все сценарии переходов в виде графа в Navigation Editor. Пример навигационного графа для демонстрационного приложения:
Чтобы открыть граф переходов:
- Откройте
res/navigation/mobile_navigation.xml
- Нажмите Design чтобы перейти в Design mode:
После этого вы увидите:
Здесь вы схематично видите сценарии переходов между экранами. Стрелочки между экранами (или назначениями/destinations) называются действиями (action). Чуть позже мы поговорим о них.
Чтобы увидеть свойства того или иного назначения (destination) нажмите на него:
Чтобы увидеть свойства того или иного действия (action) аналогично нажмите на него:
Редактирование графа переходов в XML
Аналогично, как мы можем редактировать вёрстку в XML-файле, граф переходов можно точно также редактировать. Для этого выберете вкладку Code:
Вы увидите подобный XML-файл:
<navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" app:startDestination="@+id/home_dest"> <!-- ...tags for fragments and activities here --> </navigation>
Давайте разберём основные тэги:
<navigation>
корневой тэг для графа переходовТэг <navigation>
может содержать один или несколько экранов для перехода, помеченных тэгами<activity>
или<fragment>
app:startDestination
этот атрибут помечает начальный экран на который переходит пользователь при первом запуске приложения
<fragment android:id="@+id/flow_step_one_dest" android:name="com.example.android.codelabs.navigation.FlowStepFragment" tools:layout="@layout/flow_step_one_fragment"> <argument .../> <action android:id="@+id/next_action" app:destination="@+id/flow_step_two_dest"> </action> </fragment>
Теперь давайте рассмотрим основные тэги внутри destination, а именно перехода ведущего на фрагмент:
android:id
позволяет определить ID идентификатор для фрагмента который можно использовать позже для перехода на этот фрагмент.android:name
имя фрагмента или активити для инициализации экрана при переходеtools:layout
указывает, какой макет должен отображаться в графическом редакторе.
Чуть позже мы рассмотрим еще несколько тэгов таких как: <action>
, <argument>,
и <deepLink>