Попробуем, пользуясь официальным руководством и примерами кода, построить работающую систему навигации для будущего многоэкранного приложения в соответствии со стандартами Navigation Architecture Component. Статья включает следующие разделы:
Часть 1. Подготовительные работы
— 1.1. Создание проекта
— 1.2. Зависимости (Dependencies)
— 1.3. Страницы: создание фрагментов
— 1.4. Адреса: файл ресурсов типа «Navigation»
— 1.5. Фрейм: виджет NavHostFragment
Часть 2. Элементы навигации
— 2.1. Навигация с помощью кнопок
— 2.2. Боковое меню (Drawer)
— 2.3. Панель инструментов: Toolbar вместо ActionBar
— 2.4. Нижнее меню (Bottom Navigation)
— 2.5. Всплывающее меню (Overflow Menu)
Краткие выводы и ссылка на github
Часть 1. Подготовительные работы
1.1. Создание проекта
Нам понадобятся базовые знания Котлина, IDE Android Studio версии не ниже 3.3, смартфон или эмулятор с версией API 14 или выше.
Что такое GPS и как работает навигация в смартфоне?
Создадим в Android Studio новый проект под названием «Navigation2019».


IDE создаст файл главной активности «MainActivity.kt» и его макет (шаблон) «activity_main.xml».

1.2. Зависимости (Dependencies)
Откроем файл «build.gradle» модуля (не проекта, а именно модуля) и в блок «dependencies» добавим необходимые зависимости:
def nav_version = «1.0.0» implementation «android.arch.navigation:navigation-fragment-ktx:$nav_version» implementation «android.arch.navigation:navigation-ui-ktx:$nav_version»

Знакомьтесь, компонент Navigation в Android!

Всем известно, что навигация между экранами является одним из фундаментальных принципов в приложениях Android. Как правило, мы осуществляем ее при помощи Intents или Event Bus. Но как быть в сложных ситуациях, например с боковым навигационным меню (navigation drawer) или меню, расположенным внизу (bottom navigation), когда необходимо выделить выбранную вкладку, сохранив отображение панели вкладок и синхронно изменить экран на тот, что соответствует вкладке, не говоря уже об управлении бэкстеком. Для реализации этих задач нам явно потребуется что-то получше.
Компонент Navigation — это комплексное решение всех проблем для любого типа навигации в приложениях Android. Он помогает управлять навигацией, транзакциями фрагментов, бэкстеком, анимацией, глубокими ссылками, а также многим другим. Компонент JetPack Navigation представляет собой набор библиотек и инструментов, сопровождается руководством и обеспечивает продуманную структуру навигации внутри приложения.
Как работают навигационные системы GPS и ГЛОНАСС
Компонент Navigation обеспечивает новый тип навигации в разработке Android, включающей навигационный граф (navigation graph), который позволяет видеть все экраны и пути навигации между ними.
Давайте рассмотрим три главные части компонента Navigation:
1. Навигационный граф. Эторесурс XML, содержащий всю навигационную информацию в одном централизованном месте. Он включает в себя все отдельные области контента в приложении, называемые пунктами назначения (destinations), а также возможные пути навигации по приложению, доступные для пользователя.
2. NavHost. Этопустой контейнер, отображающий пункты назначения из навигационного графа.
3. NavController. Это объект, управляющий навигацией приложения в NavHost. Он координирует смену контента пунктов назначения в NavHost в процессе перемещения пользователя по приложению.
Обратим внимание еще на два понятия, которые мы будем часто использовать:
- Пункты назначения. Это не что иное, каквсе области контента в приложении, такие какактивности(activities), фрагменты (fragments), диалоговые окна и т. д.
- Действия (actions). Онииспользуются для создания навигации, имеющей атрибут destination , в котором можно указать id конечной заставки.
Когда мы осуществляем навигацию по приложению с использованием NavController, то он показывает соответствующий пункт назначения в NavHost.
Компонент Navigation обеспечивает еще ряд полезных возможностей, среди которых:
- упрощенная настройка стандартных шаблонов навигации;
- обработка транзакций фрагментов;
- безопасность типов при передаче информации в процессе навигации;
- обработка анимации переходов;
- централизация и визуализация навигации;
- корректная обработка действий “верх” (Up) и “назад” (Back) по умолчанию;
- предоставление стандартизированных ресурсов для анимации и переходов;
- реализация и обработка глубоких ссылок (deep links).
Итак, мы познакомились с компонентом Navigation и его возможностями. Теперь пора приступить к реализации базового процесса навигации.
Что же у нас в планах?
Рейтинг лучших навигаторов для Android 2023 года

Если вы живете в большом городе, то вряд ли вам удается каждый раз найти правильную дорогу при очередной поездке на автомобиле. Тогда на помощь приходит навигатор, но не обязательно покупать дорогостоящее устройство, ведь можно просто скачать и установить приложение на телефон. Мы решили найти лучший навигатор для Андроид, чтобы каждый мог подобрать для себя подходящую программу. Теперь вы всегда сможете проложить верную дорогу, ведь мы выяснили, какой навигатор для Андроид самый лучший и готовы поделиться с вами этой информацией.
№10 – CityGuide

CityGuide – это бесплатный навигатор, который самостоятельно подберет для вас маршрут, с учетом пробок, которые могут встретиться на пути. Это приложение сможет работать в разных странах, в основном СНГ. Радует тот факт, что карты не стоят на месте, а обновляются каждый день. Так что вы не пропустите изменения на дорогах.
Еще одно преимущество заключается в том, что навигация учитывает расписание закрытия мостов и железнодорожных переездов. Из дополнительных плюшек можно отметить систему антирадар, рацию и сервис SOS, с которым вы сможете вызвать такси, эвакуатор или экстренные службы. Кроме того, приложение работает офлайн и на русском языке.
Пользователи жалуются на то, что во время поездки в приложении может выскочить реклама.
№9 – OsmAnd

Приложение OsmAnd способно работать с картами автономно, если заранее их сохранить. Есть три режима: автомобильный, велосипедный и пешеходный, так что программа поможет не только за рулем. Присутствует возможность накладывания дополнительных полупрозрачных карт.
Все карты в сервисе регулярно обновляются, а планирование маршрутов весьма гибкое. Радует также возможность посмотреть навигацию по городу, при использовании общественного транспорта. Отдельно стоит отметить то, что приложение отображает максимально допустимую скорость, с которой можно двигаться по тому или иному участку дороги.
Многим не нравится, что приложение иногда может прокладывать окольный маршрут вместо оптимального.
№8 – 2ГИС: справочник и навигатор

Это очень популярное приложение, которое скачали больше 10 миллионов раз. И это не удивительно, ведь сервис имеет в своей базе не только карты с оптимальными маршрутами для пешеходов и автомобилей, но еще и огромное количество разнообразных организаций. Речь идет о магазинах, больницах и заведений. Так что вы сможете найти место, в которое нужно попасть, даже если не знаете адрес.
Приложение позволяет скачать на телефон все необходимые базы, чтобы не приходилось подключаться к интернету для поиска маршрута. Навигатор способен самостоятельно обнаруживать пробки. Кроме того, он актуален практически для всех крупных городов в России.
И снова минусом сервиса называют слишком назойливую рекламу.
2ГИС: справочник и навигатор
№7 – Maps.me

Maps.me отличается очень точными и максимально детализированными картами. Благодаря этому, он может находить любые объекты, вплоть до ближайшей к вам лавочки, на которой можно посидеть. Есть возможность накладывать векторную карту вторым слоем. Это может быть полезно, если вы хотите миновать пробку, используя метро.
Отмечается весьма гибкая настройка приложения. Можно менять единицу измерения, масштабирование, включить или отключить голосовые инструкции. Тут можно выбрать способ путешествия – автомобиль, общественный транспорт, велосипед, такси или пешком.
Карты в этом приложении разрабатывают общественностью, так что о городах с небольшим населением информации может быть слишком мало.
№6 – Sygic GPS Navigation

Данная программа использует для своей работы карты со всего мира от разных поставщиков, которые обновляются несколько раз в год. Тут есть очень точная и подробная голосовая навигация, включающая озвучивание названия улиц. Отдельно стоит отметить наличие функций, предназначение которых заключается в повышении уровня безопасности на дороге.
Есть встроенные инструкции по перестройке и ограничению скорости. Эти функции особенно будут полезны тем, у кого еще нет большого опыта в вождении. Еще больше комфорта придает возможность отслеживать доступные места для парковки.
Sygic GPS Navigation
Бесплатно приложением можно пользоваться только 7 дней. После этого придется оплачивать подписку.
№5 – Семь Дорог

Семь Дорог отличается наличием удобного интерфейса и детальными картами. Программа умеет сохранять маршруты и гибко настраивать весь функционал. Очень приятная фишка – возможность создавать собственные карты. Приложение можно впоследствии улучшать, путем скачивания разнообразных дополнений.
Голосовые подсказки звучат приятно и ненавязчиво. Есть быстрый поиск по адресу или объекту, до которого нужно добраться. Особенно удобно то, что можно проложить максимально подробный маршрут, даже если его длина составляет более 10 км.
Иногда, после обновления карты, маршрут может некорректно отображаться. Это не происходит систематически, но иногда такая неприятность возникает.
Семь Дорог
№4 – Waze

Продолжает наш рейтинг навигаторов для Андроид приложение Waze, которое оснащено большим количеством социальных функций. С данной программой вы всегда будете в курсе пробок, постов ГАИ, аварийных ситуаций на дороге и даже размещения камер. Карты, которые используются Waze, отличаются высокой детализацией и информативностью
Еще одна удобная функция – это автоматическая перестройка маршрута в случае, если приложение дало сбой или телефон аварийно отключился. К тому же, с Waze, вы сможете сэкономить деньги, приложение может найти для вас самую дешевую заправку поблизости.
К сожалению, приложение уступает конкурентам, потому что для его работы нужен интернет.
№3 – Навител

Данное приложение выпустил ведущий разработчик навигационных систем и цифровых карт. Программа для большего удобства способна переключаться между 2D и 3D режимами. Есть удобный интерфейс с быстрым доступом ко всем необходимым функциям. Голосовое сопровождение тут, в отличие от большинства навигаторов, имеет естественный и приятный тембр.
Система способна переключаться между спутниками, так что погодные условия для нее не помеха. Радует простое управление картами, много времени на их зумирование, например, вы не потратите. В целом, приложение настолько информативно, что даже отображает скорость перемещения объекта на дороге.
Само приложение можно установить бесплатно, а вот за карты придется платить.
№2 – Google Maps

Google Maps – это стандартный навигатор, который установлен на каждом Андроид-смартфоне. Из этого вытекает его первый плюс – приложение совершенно бесплатное, его не нужно скачивать, и рекламы в нем нет. Также стоит отметить интеграцию с Гугл Ассистентом, которая дает удобный голосовой поиск.
Изначально приложение было слишком ограниченным, но сейчас его доработали, добавили автономные карты и другие фишки. Еще нужно обратить внимание на то, что сервис берет карты со встроенной базы, так что не придется заморачиваться с их установкой.
Что касается недостатков Google Maps, так это очень ограниченный набор локаций, достопримечательностей и других объектов, информация о которых отмечена на карте.
Google Maps
№1 – Яндекс.Навигатор

Российская разработка Яндекс.Навигатор на данный момент лидирует среди других навигационных систем. Приложение очень бережно относится к ресурсам смартфона, но обеспечивает пользователя всей необходимой информацией, включая плотность трафика, загруженность дорог и различные происшествия, которые могут осложнить поездку.
Отмечается хорошо структурированный интерфейс, а также наличие отсчета времени до прибытия в точку назначения. Если по дороге заехать в какое-нибудь заведение, на заправку или автомойку, то программа перестроит маршрут, чтобы вы все равно добрались до места как можно быстрее.
Многим нравится наличие ночного режима, который делает карту и интерфейс темными. Это не только красиво, но и позволяет водителю не отвлекаться ночью на яркий свет дисплея.
Яндекс.Навигатор
Хоть карты и можно использовать в автономном режиме, прокладывание маршрутов доступно только при подключении к интернету.
В Топ навигаторов для Андроид вошли только самые лучшие приложения, с которыми вы легко найдете дорогу даже в незнакомом городе. Каждая программа имеет свои преимущества и недостатки, так что не стоит слепо полагаться на место в рейтинге. Выберите то, что лучше всего подойдет именно для вас.
Источник: geekhard.ru