Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Jetpack Navigation3 - это новая библиотека Google для навигации, построенная специально для Compose, построенная вокруг состояния стека
Подробности в issue, а исходники на
#compose #multiplatform
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Jetpack Navigation 3 теперь мультиплатформенная!
В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS
Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для⚙️ Compose Multiplatform от JetBrains
#compose #kmp #navigation
В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS
Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для
#compose #kmp #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mobius — канал конференции
#видеозаписи #МобильныйВторник
Открываем новую видеозапись выступления:
Михаил Мальцев — Облегчаем жизнь больших экранов на Compose
😉 YouTube | 📺 VK Видео
Скачать презентацию с сайта Mobius
Открываем новую видеозапись выступления:
Михаил Мальцев — Облегчаем жизнь больших экранов на Compose
Скачать презентацию с сайта Mobius
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Михаил Мальцев — Облегчаем жизнь больших экранов на Compose
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
Скачать презентацию с сайта Mobius — https://jrg.su/HKD8Ka
В декларативных UI-фреймворках, таких как Jetpack Compose, принятым подходом является state hoisting. Это означает, что чаще всего мы стремимся…
— —
Скачать презентацию с сайта Mobius — https://jrg.su/HKD8Ka
В декларативных UI-фреймворках, таких как Jetpack Compose, принятым подходом является state hoisting. Это означает, что чаще всего мы стремимся…
В Compose 1.9.0 добавили больше возможностей управления тенями и их типами.
Modifier
.size(300.dp)
.background(Red300)
.innerShadow(
shape = RectangleShape
block = {
radius = 50f
}
)
.dropShadow(
shape = RectangleShape
block = {
radius = 50f
}
)
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
Подкючайте артефакт
org.jetbrains.androidx.navigation3:navigation3-ui:1.0.0-alpha01 в common код и можете пробоватьЖдем актуализации до свежей альфа версии, а также адаптивные layout и интеграцию с ViewModel
#compose #kmp #naviation #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
Что нового для всех таргетов:
👉 Аннотация
@Preview в common коде теперь поддерживает задание параметров (имя для отображения, размеры и прочее)👉 Больше возможностей по управлению тенями
👉 Адаптировали новое API для управления контекстным меню из Android под все платформы. Требуется включение через код
ComposeFoundationFlags.isNewContextMenuEnabled = true
👉 Тема Material Expressive
👉 Артефакт
androidx.compose.runtime:runtime стал мультиплатформенным, перенеся наработки из org.jetbrains.compose.runtime:runtime👉
runComposeUiTest() теперь позволяет запускать suspend функции в теле вызоваCompose/iOS
👉 Управление желаемой частотой кадров для рендера Composable
Modifier.preferredFrameRate(FrameRateCategory.High)
Modifier.preferredFrameRate(120f)
👉 Поддержка кастомизаций ввода, специфичных для iOS
BasicTextField(
value = "",
onValueChange = {},
keyboardOptions = KeyboardOptions(
platformImeOptions = PlatformImeOptions {
keyboardType(UIKeyboardTypeEmailAddress)
}
)
)
Compose/Web
🎉 Поддержка Web таргета перешло в Beta статус
👉 Поддержка Accessibility API
👉 Новое API для встраивания HTML
private val ttOSM =
"https://www.openstreetmap.org/export/embed.html?bbox=4.890965223312379%2C52.33722052818563%2C4.893990755081177%2C52.33860862450587&layer=mapnik"
@Composable
fun Map() {
Box(
modifier = Modifier.fillMaxWidth().fillMaxHeight()
) {
WebElementView(
factory = {
(document.createElement("iframe")
as HTMLIFrameElement)
.apply { src = ttOSM }
},
modifier = Modifier.fillMaxSize(),
update = { iframe -> iframe.src = iframe.src }
)
}
}
👉 Упростили связывание Jetpack Navigation c навигацией в браузере
// Код в Composable функции
LaunchedEffect(Unit) {
// Implicitly accesses the window object
navController.bindToBrowserNavigation()
}
Compose/Desktop
👉 Возможность настройки окна с контентом с помощью API SwingFrame() and SwingDialog(), аналогичные Window() and DialogWindow(). Разница то что новые API конфигурируются в init блоке до показа UI.
#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как была сделана реализация написали в статье, а исходники есть на GitHub
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновляйте зависимости или сразу всё через BOM файл:
```kotlin
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.09.01"))
}```
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Что нового:
👉 Зависимость material-icons-core теперь не добавляется транзитивно и нужно явно её добавлять
👉 Для описания хореографии и анимации Material 3 компоненты теперь используют MotionScheme API
👉 Компонент HorizontalCenteredHeroCarousel - горизонтальная карусель с паралаксом (спека тут)
👉 Компонент VerticalDragHandle - перетягиваемый разделитель экрана для контента на большом экране
👉 SecureTextField - поле ввода для паролей с защитой вводимых данных
👉 Поддержка автоматического размера текста в Text полях
👉 Добавили Material 3 декораторы для BasicTextField2
👉 Добавлено API TimePickerDialog
👉 Обновили API SearchBar
🛠 Исправление багов
🚀 Повышение производительности
#compose #material3
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор статьи решил сделать визуализацию графа навигации между Composable функциями. Для этого был написан плагин Kotlin компилятора, который анализирует Kotlin код, генерирует диаграмму в формате Mermaid, которые после можно открыть с помощью плагина для IDEA. Результат на картинке к посту. Конечно, результат для Jetpack Navigation в Android Studio выглядит лучше, но уже неплохо.
🔗 Альтернативная ссылка
#compose #ksp #навигация
Please open Telegram to view this post
VIEW IN TELEGRAM
В Compose 1.9 прокачали API для определения видимости Composable на экране. Например, это может быть полезно в скролящихся списках.
LazyColumn {
items(feedData) { video ->
VideoRow(
video,
Modifier.onVisibilityChanged(
// задержка вызова callback
minDurationMs = 500,
// какая часть компонента должна
// быть в области видимости
minFractionVisible = 1f,
// Зона для определения видимости компонента
// По умолчанию - окно приложения
viewportBounds: LayoutBoundsHolder? = null,
) { visible ->
// Вызовется когда компонент
// частично покажется или полностью скроется
if (visible) video.play() else video.pause()
},
)
}
}🔗 Подробная документация и примеры тут
🔗 Альтернативная ссылка на статью
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM