Forwarded from Android Broadcast
🎉 Jetpack Navigation 3 - навигация для Compose, написанная с нуля!
Будем честны Jetpack Navigation for Compose было никаким решением, до того как в ней появилась типобезопасная навигация, но и тогда остается много вопросов. Google решила что пора написать настоящую навигацию для Compose. Знакомьтесь - Jetpack Nav 3
Ключевые идеи в новой библиотеки: декларативное объявление + "навигация как состояние". Это полностью повторяет идеи что я заложил в NavState. Все это вылилось в принципы:
👉 Разработчик управляет back stack
👉 Возможность расширения и реализации собственной навигации на базовых компонентах
👉 Анимации из коробки
👉 Поддержка Predictive Back
👉 Поддержка адаптивных layout
👉 Сохранения состояния каждого элемент back stack, включая ViewModel
👉 Поддержка многомодульности
Пока представлена только первая альфа и библиотеки еще предстоит путь, как минимум обзавестись поддержкой KMP
🔗 Больше подробности в документации
🐱 Примеры использования на GitHub
#jetpack #compose #навигация
Будем честны Jetpack Navigation for Compose было никаким решением, до того как в ней появилась типобезопасная навигация, но и тогда остается много вопросов. Google решила что пора написать настоящую навигацию для Compose. Знакомьтесь - Jetpack Nav 3
Ключевые идеи в новой библиотеки: декларативное объявление + "навигация как состояние". Это полностью повторяет идеи что я заложил в NavState. Все это вылилось в принципы:
👉 Разработчик управляет back stack
👉 Возможность расширения и реализации собственной навигации на базовых компонентах
👉 Анимации из коробки
👉 Поддержка Predictive Back
👉 Поддержка адаптивных layout
👉 Сохранения состояния каждого элемент back stack, включая ViewModel
👉 Поддержка многомодульности
Пока представлена только первая альфа и библиотеки еще предстоит путь, как минимум обзавестись поддержкой KMP
🔗 Больше подробности в документации
#jetpack #compose #навигация
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥43👍9❤1
Что нового
👉 Compose библиотека с ресурсами теперь может быть собрана как XCFramework (нужен Kotlin 2.2+)
👉 Теперь можно изменить имя генерируемого класса для Compose Resources (Res->)
🛠 Исправление багов
#compose #composemp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22
Forwarded from Android Broadcast
Google показала как они снизили лаги UI на Jetpack Compose за 2 года. Тесте проводились на Pixel 3a
В Compose 1.9.0 появятся еще улучшения:
🚀 Приостановка композции
🚀 Фоновая подготовка текста для отображения
🚀 Улучшения предзагрузки в LazyLayout
#compose #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥48👍7
В
androidx.compose.material3:material3:1.4.0-alpha10
есть множество новых компонентов следующий дизайн системы Google. Помимо компонентов также доступна новая системная физика для движений компонентов@Composable
fun AndroidifyTheme(
content: @Composable () -> Unit,
) {
val colorScheme = LightColorScheme
MaterialExpressiveTheme(
colorScheme = colorScheme,
typography = Typography,
shapes = shapes,
motionScheme = MotionScheme.expressive(), // задание схемы движений
content = {
SharedTransitionLayout {
CompositionLocalProvider(LocalSharedTransitionScope provides this) {
content()
}
}
},
)
}
Больше примеров найдете в статье, а также можно посмотреть в исходниках нового приложения примера Androidify
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤯6🤔3
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
#androidstudio #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍59🔥32
This media is not supported in your browser
VIEW IN TELEGRAM
Kotlin Playground позволяет писать код с Compose Multiplatform и сразу его проверить (используется Compose Web)
#compose #composemp #web
#compose #composemp #web
🤯76🔥41
Интересная статья с экспериментов как происходит рекомпозиция в зависимости от параметров. влияние лямбд и strong skipping режима работы компилятора.
По итогу автор выводит ряд рекомендаций (зайдите поставьте лайк на Хабре за статью):
#compose #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤9👏2🤯1
Пример реализации виджета тултипа, который должен уметь:
👉 Показываться под якорным элементом в виде облачка
👉 Скрываться согласно нашей кастомной логике
👉 Добавляться в существующие экраны с минимальными затратами
👉 Не блокировать взаимодействие с остальным UI
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Очень подробный разбор в статье (EN) Материал обязателен тем кто пишет свой UI Kit или много собственных компонентов на Compose
#compose #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28
Почему важно применить? Да потому что в Compose MP по умолчанию используется эффект в лоб от Material, да еще и не в лучшей реализации.
Подробнее про реализацию можно почитать в статье (7м)
#compose #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤2
Новая возможность появилась в Compose 1.9.0-alpha04. В release notes рассказывают про "новый кастомизируемый фреймвор теней" 🤯
@Composable
fun DropShadowSample() {
Box(Modifier.size(100.dp, 100.dp)
.dropShadow(RectangleShape, DropShadow(12.dp)))
}
@Composable
fun InnerShadowSample() {
Box(Modifier.size(100.dp, 100.dp)
.innerShadow(RectangleShape, InnerShadow(12.dp)))
}
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍8🤯5
Самый просто способ обновиться - использовать свейжи BOM файл
// Добавляем в зависимости перед добавлением Compose зависимостей
// и лучше версию зависимостей не указывать вовсе, чтобы они всегда из BOM брались
implementation("androidx.compose:compose-bom-alpha:2025.06.00")
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
@Composable
fun AddComponentsToTextContextMenu() {
val textFieldState = rememberTextFieldState()
BasicTextField(
state = textFieldState,
modifier =
Modifier.addTextContextMenuComponents {
separator()
item(key = ClearKeyDataObject, label = "Clear") {
textFieldState.clearText()
close()
}
separator()
}
)
}
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👏8👍5❤1
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30