Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#compose #navigation #jetpack

Navigating through multi-module Jetpack Compose applications (14 мин)

Организация навигации в многомодульном приложении с Jetpack Compose для UI и Jetpack Navigation для переходов между экранами. В статье много времени уделили организации модулей в примере и она основе этого разделения применяют организацию навигации

Как вы работает с навигацией в Compose?
#compose #navigation

Jetpack Compose Navigation в многомодульном проекте

Опыт организации навигации с помощью Jetpack Navigation в многомодульном Android приложения с Compose
#compose #navigation #jetpack

Safe compose arguments: An improved way to navigate in jetpack compose

Реализация Jetpack Navigation для Compose пока оставляет желать лучшего - нет статической типизации параметров, легко забыть что-то не передать или потерять и пр. болячки. Конечно вы можете подумать что лучше взять какое-то другое решения для навигации (вполне можете быть правы), но автор статьи решил часть проблем написав процессор аннотаций для строго описания параметров и мест навигации в графе.

🔗 Safe Compose Args
#compose #navigation

Очередная навигация для Android Jetpack Compose? Brick

Jetpack Navigation огорчает своим качеством для Compose (а кого и вообще огорчает как решение для навигации). Brick - предлагают как лучшее решение для навигации, а в статье доказывает почему
#compose #navigation

Масштабируем Jetpack Compose Navigation

История интеграции и использовать Jetpack Navigation для приложения на основе Compose.
👍8
#jetpack #navigation #compose

Вышел Navigation 2.4.0
🔥 Библиотеки были полностью переписаны на Kotlin
👉 Поддержка two pane layout через AbstractListDetailFragment
👉 Возможность получить список всех видимых NavBackStackEntry
👉 Возможность создания собственных NavType, которые поддерживаются только для графов, создаваемых в коде
👉 Поддержка NavigationRailView
👉 Идентификация destination через строковый идентификатор - route, в дополнение к R.id.
👉 Стабильная поддержка Jetpack Compose
👉 Поддержка множества back stack
👉 Поддержка Android 12
👉 Возможность получения NavArgs из savedStateHandle в ViewModel с помощью метода fromSavedStateHandle(), который генерируется для каждого класса аргументов
🛠️ Исправление багов
👍52🔥6💩2🤩1
📄 Appyx vs Jetpack Compose Navigation (5 мин)

Сравнение 2 решений навигации для Jetpack Compose: Appyx от Bumble (пока в альфа) против Jetpack Navigation. Сравнение производится на примере решения реальных задач

#compose #navigation
👍22👎15
Почему больше не буду использовать deep linking из Navigation Component

Автор статьи делится рядом проблем и неудобствами при работе работе с deep link в XML Navigation Graph

#jetpack #navigation
👎13👍8🤔1
Пример организации навигации в многомодульном приложении с UI на Jetpack Compose на основе Jetpack Navigation

По моему опыту, Jetpack Compose Navigation - боль! Вообще не хочется с ним работать, берите что другое для навигации или точно убедитесь что оно вам подойдет

#compose #navigation
👏16🤔9😁7👍6
Difference between findStartDestination() and startDestination in Jetpack Compose Navigation (5 мин)

Статья с разбором различия API в Jetpack Compose Navigation. В основном отличия в поведении с с вложенными графами, все подробности по ссылке

#jetpack #navigation #compose
👍17👎8
«Внешняя» навигация в многомодульном проекте на Kotlin

Навигация - боль. Навигация в большом проекте - боль и страдания. Про это и пойдет речь в статье, а именно - навигация между фича модулями. Тема извечная и так не найдена серебряная пуля.

#architecture #navigation
🔥32👍11👎11
Руководство (EN, 4 мин) как использовать Jetpack Compose Navigation и Dagger 2 с отложенной (ленивой) инициализацией модулей

#compose #dagger #navigation
👍24👎15
Началась разработка Jetpack Navigation 2.9.0 в которой добавили поддержку Supporting Pane

#jetpack #navigation
👍185🔥3
🚀 Jetpack Navigation 2.8.9 получила исправление регресса работы Deep Link в версии 2.8.8

#android #jetpack #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19👎51
🚀 Релиз Jetpack Navigation 2.9.0

🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API

#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
This media is not supported in your browser
VIEW IN TELEGRAM
Улучшили навигацию между Compose Preview и Composable функцией с которой связано превью

#compose #androidstudio
🔥63👍8
Media is too big
VIEW IN TELEGRAM
📹 Разбор Jetpack Navigation 3 - настоящая навигация для Compose (21 мин)

Месяц назад Google анонсировала навигацию специально разработанную под Compose и которая должна решить все боли. В видео показываю её возможности, делюсь своим мнение и рассказываю про недочеты, которые надеюсь что решат до стабильного релиза

#AndroidBroadcast #navigation #jetpack #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥10🤔43
🤖 Для Compose Material3 Adaptive добавили поддержку каноничных layout на основе библиотеке Navigation 3. Пока вышла первая альфа версия, но уже можно начинать работать. Подробности в анонсе

#compose #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🚀 Lifecycle 2.10.0 вышел в стабильной версии!

Google выпустила мажорное обновление библиотек Lifecycle. Этот релиз сфокусирован на улучшении интеграции с Compose.

⚙️ rememberLifecycleOwner для Compose
Новый композабл позволяет создавать изолированные LifecycleOwner внутри UI. Идеально для компонентов, которым нужно независимое управление состоянием — например, для HorizontalPager, где только активная страница должна быть в состоянии RESUMED.

@Composable
fun MyComposable() {
val lifecycleOwner = rememberLifecycleOwner(
maxLifecycle = Lifecycle.State.RESUMED,
parentLifecycleOwner = LocalLifecycleOwner.current,
)

CompositionLocalProvider(
LocalLifecycleOwner provides lifecycleOwner
) {
// Дочерние композаблы теперь имеют собственный жизненный цикл
}
}


🚀 Интеграция с Navigation 3
Новый артефакт lifecycle-viewmodel-navigation3 предоставляет готовый декоратор для автоматической привязки ViewModel к отдельным экранам в Navigation 3.

NavDisplay(
backStack = backStack,
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator(), // Добавляем эту строку
),
entryProvider = entryProvider { /* ... */ }
)


Удобства для разработчиков:
👉 Идиоматичный Kotlin API для создания кастомных CreationExtras

    CreationExtras {
this[MY_CUSTOM_KEY] = "myValue"
}

👉 Метод savedStateHandle.saved() теперь нативно поддерживает nullable типы
👉 Конструкторы SavedStateHandle помечены как @VisibleForTesting

⚠️ Важное изменение
Повышение minSdk с API 21 до API 23 — убедитесь, что ваше приложение соответствует новым требованиям.

#Jetpack #Lifecycle #Compose #Navigation #ViewModel #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥10🤯3👍2🙏1
🚀 Navigation Event 1.0.0 — новая KMP-библиотека для обработки навигации на разных платформах

Что дает библиотека
👉 Единый кроссплатформенный API для замены разрозненных решений
👉 Централизованная система управления всей навигацией в приложении
👉 Базовый слой для будущих навигационных решений Android

Пример использования:
val myHandler = object : NavigationEventHandler<NavigationEventInfo>(
initialInfo = CurrentInfo,
isBackEnabled = true
) {
override fun onBackStarted(event: NavigationEvent) {
// Подготовка к навигации
}

override fun onBackProgressed(event: NavigationEvent) {
// Анимации на основе event.progress
}

override fun onBackCompleted() {
// Завершение навигации
}
}


👉 Готовая интеграция с Compose
val navEventState = rememberNavigationEventState(
currentInfo = CurrentInfo,
backInfo = PreviousInfo
)

NavigationBackHandler(
state = navEventState,
isBackEnabled = true,
onBackCompleted = { /* Действие при завершении */ }
)


👉 Диспетчеры могут образовывать родительско-дочерние цепочки:
// Compose
val childDispatcher = rememberNavigationEventDispatcher(
parent =
LocalNavigationEventDispatcherOwner
.current
.navigationEventDispatcher
)


👉 Нативная поддержка Predictive Back из Android
👉 Библиотека уже используется в Activity 1.12.0 как базовый слой

#Jetpack #Navigation #Compose #KMP #PredictiveBack #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162