UPD Расширилась поддержка HTML в AnnotatedString. Теперь поддерживаются буллеты
Text(
AnnotatedString.fromHtml(
"""
<h1>HTML content</h1>
<ul>
<li>Hello,</li>
<li>World</li>
</ul>
""".trimIndent()
)
)
#compose
Если вам нужно отслеживать положении Composable на экране, то вместо onGloballyPositioned теперь в Compose 1.8 появился новый modifier - onLayoutRectChanged. Он покрывает множество сценариев использования onGloballyPositioned, но делает это с меньшей нагрузкой
#compose
Box(
modifier = Modifier
.size(100.dp)
.background(Color.Red)
.onLayoutRectChanged { rect ->
println("Position: ${rect.left},${rect.top} Size: ${rect.width}x${rect.height}")
}
)
#compose
This media is not supported in your browser
VIEW IN TELEGRAM
В Compose 1.8 появилась возможность анимировать границы Composable с помощью modifier animateBounds
#compose #анимация
#compose #анимация
Box(
Modifier
.width(if(expanded) 180.dp else 110.dp)
.offset(x = if (expanded) 0.dp else 100.dp)
.animateBounds(lookaheadScope = this@LookaheadScope)
.background(Color.LightGray, shape = RoundedCornerShape(12.dp))
.height(50.dp)
) {
Text("Layout Content", Modifier.align(Alignment.Center))
}
После релиза Compose 1.8.0 сразу же выпустили свежий RC мультиплатформенной версии. Внесены улучшения в Compose Web для Safari, но также появились и критические изменения:
👉 Зависимость material/material3 больше не добавляет зависимость material-icons-core, её нужно будет добавлять явно.
👉 Больше не поддерживается LocalTextInputService.
👉 Требуется Kotlin Gradle Plugin 2.X.
👉 Старый плагин org.jetbrains.compose.compiler больше не поддерживается.
#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
CMP Container Size - KMP библиотека для получения размера текущего окна в DP. Пригодится тем кому не подходят стандартные классы размеров окон из Jetpack WindowManager
#compose
@Composable
fun App() {
val containerSize = currentWindowContainerSize()
if (containerSize.width >= 600.dp) {
TabletLayout()
} else {
PhoneLayout()
}
}
#compose
При показе одной Composable функции
1. Фаза композции
2. Регистрация Side Effect во время композиции
3. Запуск Side Effect-ов
4. DisposableEffect синхронный и запускается сразу после композиции
5. LaunchedEffect запускается после синхронных Side Effect-ов
В статье также рассматривается что происходит при навигации между Composable
🔗 Альтернативная ссылка
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
Что нового:
👉 Переход на K2
👉 Мультиплатформенные реализации BackHandler и PredictiveBackHandler
👉 Улучшения в тестах
👉 Поддержка вариативных шрифтов на всех платформах
👉 Clipboard API заменяет ClipboardManager для работы c буфером обмена на всех платформах
👉 Множество улучшений в Compose/iOS
👉 На Windows улучшили производительность и размер инсталятора
Множество других улучшений, которые надо разбирать отдельными постами.
#compose #k2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥⚙️ Compose iOS теперь Stable
Самый громкий и важный анонс в истории Compose Multiplatform с выходом версии 1.8.0
Что именно готово для продакшен применения
👉 Все основные фичи из Jetpack Compose работают на iOS
👉 Типобезопасная навигация с поддержкой deep link
👉 Гибкое управление ресурсами
👉 Поддержка iOS Accessibility API
👉 Ощущения от UI приложения как нативного (скрол, редактирование текста, drag-and-drop, адаптивный UI, навигация жестами и пр)
👉 Производительность UI на Compose близка к SwiftUI, но пока немного уступает
Новая эра мобильной разработки уже тут!
#compose #ios
Самый громкий и важный анонс в истории Compose Multiplatform с выходом версии 1.8.0
Что именно готово для продакшен применения
👉 Все основные фичи из Jetpack Compose работают на iOS
👉 Типобезопасная навигация с поддержкой deep link
👉 Гибкое управление ресурсами
👉 Поддержка iOS Accessibility API
👉 Ощущения от UI приложения как нативного (скрол, редактирование текста, drag-and-drop, адаптивный UI, навигация жестами и пр)
👉 Производительность UI на Compose близка к SwiftUI, но пока немного уступает
Новая эра мобильной разработки уже тут!
#compose #ios
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Android Broadcast
🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API
#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновляем BOM файл
implementation(platform("androidx.compose:compose-bom:2025.05.00"))
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновляем BOM файл
implementation(platform("androidx.compose:compose-bom-alpha:2025.05.00"))
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор статьи написал простое DSL для упрощения работы с пагинацией через JetPack Paging3, вместо решения в лоб от Google. Исходны код на
@Composable
fun ArticlesPage(
articles: LazyPagingItems<Article>,
onAction: (NewsListAction) -> Unit,
) {
val newsListState = rememberLazyListState()
HandlePagingItems(articles) {
onRefresh { CircularProgressIndicator() }
onEmpty { // UI for empty list }
onError { error -> // UI for error }
onSuccess { items ->
LazyColumn(newsListState) {
onPagingItems(key = { it.id }) { article -> // UI for article }
onAppendItem { CircularProgressIndicator(Modifier.padding(6.dp)) }
onLastItem { // UI for end of the list }
}
}
}
}
#compose #dsl
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
compose-table - Compose Multiplatform библиотека с поддержкой Android, iOS, JVM Desktop, WASM для показа таблиц
Можно попробовать онлайн версию
#compose #android #ios #jvm #desktop #wasm
Можно попробовать онлайн версию
#compose #android #ios #jvm #desktop #wasm
В Compose 1.9.0 (пока в альфа) добавили новый Modifier - keepScreenOn(), который будет держать экран включенным, пока Composable функция будет частью композиции
#jetpack
Box(
modifier = Modifier.keepScreenOn()
){
...
}
#jetpack
Писали ли свой layout в Compose?
Anonymous Poll
39%
Да
52%
Нет
3%
Не знаю Compose
0%
Не пишу код
1%
Другой вариант
5%
Не участвую в опросе
This media is not supported in your browser
VIEW IN TELEGRAM
💠 Вышел Haze 1.6.0 - блюр в стиле glassmorphism для Compose Multiplatform
Что нового:
🤖 Размытие теперь работает на всех версиях Android
🎨 Поддержка размытия переднего плана (контента)
📐 Обработка размытых краёв
#compose
Что нового:
🎨 Поддержка размытия переднего плана (контента)
📐 Обработка размытых краёв
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM