Дизайн навигационных графиков

  1. Вложенные графики
  2. Глобальные действия

Компонент навигации использует график навигации для управления навигацией вашего приложения. График навигации - это файл ресурсов, который содержит все пункты назначения вашего приложения, а также логические соединения или действия , которые пользователи могут выполнять для перемещения из одного пункта назначения в другой. Вы можете управлять графиком навигации своего приложения, используя редактор навигации в Android Studio.

В этом разделе приведены рекомендации и рекомендации по разработке графиков навигации вашего приложения.

Навигационный график верхнего уровня вашего приложения должен начинаться с начального пункта назначения, который видит пользователь при запуске приложения, и должен включать пункты назначения, которые они видят при перемещении по вашему приложению.

Навигационный график верхнего уровня вашего приложения должен начинаться с начального пункта назначения, который видит пользователь при запуске приложения, и должен включать пункты назначения, которые они видят при перемещении по вашему приложению

Рисунок 1: Навигационный график верхнего уровня.

Вложенные графики

Входящие потоки, мастера или другие подпотоки в вашем приложении обычно лучше всего представлены как вложенные навигационные графики , Таким образом, благодаря вложенным потокам суб-навигации, основной поток пользовательского интерфейса вашего приложения легче понять и управлять им. Кроме того, вложенные графики можно использовать повторно. Они также обеспечивают уровень инкапсуляции - места назначения вне вложенного графа не имеют прямого доступа ни к одному из мест назначения во вложенном графе. Вместо этого они должны навигации () к самому вложенному графу, где внутренняя логика может измениться, не затрагивая остальную часть графа.

Используя в качестве примера график навигации верхнего уровня из рисунка 1, предположим, что вы хотите, чтобы пользователь видел экран title_screen и регистрировал экраны только при первом запуске приложения. После этого информация о пользователях сохраняется, и при последующих запусках приложения вы должны выводить их прямо на экран матча . Рекомендуется установить экран соответствия в качестве начального пункта назначения графика навигации верхнего уровня и переместить экраны заголовков и регистров во вложенный график, как показано на рисунке 2:

Рекомендуется установить экран соответствия в качестве начального пункта назначения графика навигации верхнего уровня и переместить экраны заголовков и регистров во вложенный график, как показано на рисунке 2:

Рисунок 2. Граф навигации верхнего уровня теперь содержит вложенный граф.

Когда откроется экран матча, вы можете проверить, есть ли зарегистрированный пользователь. Если пользователь не зарегистрирован, вы можете перейти к экрану регистрации. Для получения дополнительной информации о сценариях условной навигации см. Условная навигация ,

Другой способ модульной структуры вашего графа - включить один график в другой через элемент <include> в родительском графе навигации. Это позволяет определить включенный график в отдельном модуле или проекте, что максимизирует возможность повторного использования.

Если ваше приложение зависит от библиотечные модули , в котором содержится навигационная диаграмма, вы можете ссылаться на эти навигационные графики, используя элемент <include>.

Основываясь на нашем примере с викторинами, предположим, что вы хотите разделить игровые части приложения на отдельный библиотечный модуль, чтобы вы могли включать экраны in_game , results_winner и game_over в несколько приложений, как показано в следующем примере:

<! - График навигации модуля приложения -> <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 / match "> <фрагмент android: id =" @ + id / match "android: name = "com.example.android.navigationsample.Match" android: label = "gment_match "> <! - Запустить график навигации внутри игровых модулей -> <action android: id =" @ + id / action_match_to_in_game_nav_graph "app: destination = "@ id / in_game_nav_graph" /> </ фрагмент> <include app: graph = "@ navigation / in_game_navigation" /> </ navigation> <! - График навигации игрового модуля -> кодировка <? xml version = "1.0" = "utf-8"?> <навигация xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: app = "http://schemas.android.com/apk/res- auto "android: id =" @ + id / in_game_nav_graph "app: startDestination =" @ id / in_game "> <фрагмент android: id =" @ + id / in_game "android: name =" com.example.android.gamemodule. InGame "android: label =" Game "> <action androi d: id = "@ + id / action_in_game_to_resultsWinner" app: destination = "@ id / results_winner" /> <action android: id = "@ + id / action_in_game_to_gameOver" app: destination = "@ id / game_over" /> </ фрагмент> <фрагмент android: id = "@ + id / results_winner" android: name = "com.example.android.gamemodule.ResultsWinner"> <! - Действие назад к месту назначения, которое было запущено в этот in_game_nav_graph -> <action android : id = "@ + id / action_pop_out_of_game" app: popUpTo = "@ id / in_game_nav_graph" /> </ фрагмент> <фрагмент android: id = "@ + id / game_over" android: name = "com.example.android. gamemodule.GameOver "android: label = "gment_game_over" tools: layout = "@ layout / frag_game_over"> <! - Действие назад к месту назначения, запущенное в этом in_game_nav_graph -> <action android: id = "@ + id / action_pop_out_of_game "app: popUpTo =" @ id / in_game_nav_graph "/> </ фрагмент> </ navigation>

Вы должны включить график верхнего уровня в свой основной модуль приложения и иметь ссылку Gradle для всех модулей, содержащих навигацию, на которую вам нужно ссылаться.

Глобальные действия

Любой пункт назначения в вашем приложении, доступный по нескольким путям, должен иметь соответствующий глобальное действие определено, чтобы перейти к этому месту назначения. Глобальные действия могут быть использованы для навигации к месту назначения из любого места.

Давайте применим это к нашему примеру с библиотечным модулем, который имеет одинаковое действие, определенное как в выигрышной, так и в игровой зоне. Вы должны извлечь эти общие действия в одно глобальное действие и ссылаться на них из обоих пунктов назначения, как показано в следующем примере:

<? xml version = "1.0" encoding = "utf-8"?> <navigation xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: app = "http: // schemas .android.com / apk / res-auto "android: id =" @ + id / in_game_nav_graph "app: startDestination =" @ id / in_game "> <! - Действие назад к месту назначения, запущенному в этом in_game_nav_graph -> < action android: id = "@ + id / action_pop_out_of_game" app: popUpTo = "@ id / in_game_nav_graph" app: popUpToInclusive = "true" /> <фрагмент android: id = "@ + id / in_game" android: name = "com .example.android.gamemodule.InGame "android: label =" Game "> <action android: id =" @ + id / action_in_game_to_resultsWinner "app: destination =" @ id / results_winner "/> <action android: id =" @ + id / action_in_game_to_gameOver "app: destination =" @ id / game_over "/> </ фрагмент> <фрагмент android: id =" @ + id / results_winner "android: name =" com.example.android.gamemodule.ResultsWinner "/ > <фрагмент android: id = "@ + id / game_over" android: name = "com.example.android.gamemodule.GameOver" android: label = "frag_game_over" инструменты: layout = "@ layout / fragmen t_game_over "/> </ navigation>

Увидеть Глобальные действия в документации навигации, чтобы узнать больше и примеры того, как использовать глобальные действия в ваших фрагментах.

Похожие

Перестрелка векторной графики: Inkscape v CorelDRAW
... глобальные настройки управления цветом по умолчанию, так и настройки для отдельных документов. Настройки по умолчанию применяются глобально и отражаются в диалоге отдельного документа, пока они не будут отредактированы. Цветовой режим по умолчанию и цветовой режим документа могут быть установлены в CMYK или RGB, и эти параметры документа также доступны при открытии нового документа. Документы могут быть проверены, выбрав Инструменты / Цвета проверки. Цветовой профиль необходимого
Nokia Lumia 1520
Nokia Lumia 1520 стала для нас первым устройством Windows Phone с экраном, преодолевающим барьер в 5 дюймов по диагонали в разрешении Full HD, а также первым мобильным четырехъядерным чипом. Чтобы избежать путаницы, это фаблет, но один из лучших на рынке, который, помимо превосходного, потрясающего дизайна, может также улучшить 20-мегапиксельную камеру PureView с оптической стабилизацией изображения и высочайшей
Обзор Sony Xperia Z3 Compact: лучший компактный телефон на базе Android получает новый облик
Хотя большинство производителей смартфонов сделали компактные версии своих флагманских телефонов, большинство из них были крайне ослаблены, и единственное сходство заключается в названии. Не так с Sony. это Xperia Z1 Compact упакован с тем же привлекательным дизайном, наддувом процессора и потрясающей камерой, что и его топовый брат, но в гораздо более карманном размере. Я был так впечатлен, что получил почти идеальный
Huawei P9 Lite 2017: цена, характеристики и лучшие предложения
Нота Ки Экономически эффективным Нет цены, нет ки О Huawei P9 Lite 2017 Все смартфоны Все бренды смартфонов Huawei Huawei P9 Lite 2017

Комментарии

Планируете начать свой первый дизайн проекта электроники?
Планируете начать свой первый дизайн проекта электроники? Скорее всего, вы будете использовать беспроводные функции для связи с Интернетом или другими устройствами. В то время как есть много способов для беспроводной связи, два короля мира беспроводной связи заслуживают некоторого внимания в вашем списке - WiFi и Bluetooth. Но как именно работают эти две технологии, на которые мы сегодня так сильно полагаемся, и как вы узнаете, какую из них использовать в вашем первом проекте? Давайте разберемся.
Как вам удается согласовать все эти действия?
Как вам удается согласовать все эти действия? У вас есть рецепт на волшебное продление дня? Самое смешное во всем этом то, что до сих пор я делал все это в дополнение к моей работе над контрактом. Я не могу сказать, в чем мой секрет, потому что я всегда был невероятно продуктивным. Я интересовался (и все еще интересуюсь) многими вещами, теоретически совершенно не связанными со мной, поэтому мне пришлось действовать быстрее и эффективнее, чтобы

График навигации игрового модуля -> кодировка <?
Utf-8"?
Планируете начать свой первый дизайн проекта электроники?
Но как именно работают эти две технологии, на которые мы сегодня так сильно полагаемся, и как вы узнаете, какую из них использовать в вашем первом проекте?
Как вам удается согласовать все эти действия?
Как вам удается согласовать все эти действия?
У вас есть рецепт на волшебное продление дня?