Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥10
Jetpack Navigation3 - это новая библиотека Google для навигации, построенная специально для Compose, построенная вокруг состояния стека
Подробности в issue, а исходники на
#compose #multiplatform
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥46🤔2
🔥 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
🔥47👍8🤔5❤1
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
🔥47❤4
Подкючайте артефакт
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
👍29🔥4🤔2
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
1❤45🔥10👍4
Что нового для всех таргетов:
👉 Аннотация
@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
1🔥28❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как была сделана реализация написали в статье, а исходники есть на GitHub
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥83❤8
Обновляйте зависимости или сразу всё через BOM файл:
```kotlin
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.09.01"))
}
```
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
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
🔥36❤5👍4
Автор статьи решил сделать визуализацию графа навигации между Composable функциями. Для этого был написан плагин Kotlin компилятора, который анализирует Kotlin код, генерирует диаграмму в формате Mermaid, которые после можно открыть с помощью плагина для IDEA. Результат на картинке к посту. Конечно, результат для Jetpack Navigation в Android Studio выглядит лучше, но уже неплохо.
🔗 Альтернативная ссылка
#compose #ksp #навигация
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍8
В 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
👍42❤6🔥3