Что нового:
👉 Поддержка вариативных шрифтов
👉 Поддержка ARM64 для Windows в Compose Desktop
iOS
👉 Экспериментальная поддержка Drag-and-drop на iOS
👉 Улучшение доступности на iOS
👉 Экспериментальный рендеринг на фоновом потоке
👉 Поддержка жеста "Назад" в Jetpack Navigation в версии 2.9.0-alpha15 для iOS
Web
👉 Экспериментальная предзагрузка ресурсов: шрифтов и изображений для веб-таргета
👉 Kotlin/Wasm и Kotlin/JS теперь корректно работают с базовыми элементами управления в браузере
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39
#kotlin #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26
#android #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
Demeter создан для тех, кто пишет на Compose и задается вопросом «почему всё лагает?» Библиотека, разработанная командой мобильной разработки Яндекса, уже лежит в опенсорсе.
Что умеет:
👉 Показывает частоту и причины рекомпозиций
👉 Помогает понять, где и почему UI перестраивается
👉 Показывает время выполнения методов прямо во время работы
👉 Считает время переходов между экранами
👉 Анализирует создание объектов и потоки выполнения
🛠 Всё это — без ручного обвешивания кода и пересборок. Demeter внедряется на этапе компиляции. Используются Kotlin Compiler Plugin (анализ Compose до компиляции) и модификация байткода (в том числе для сторонних библиотек).
Я попробовал — выглядит как must-have инструмент для любого, кто пилит что-то серьёзное на Compose
Подробнее на Хабре
Исходники на GitHub
#compose #инструменты #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍44❤1
Обзор фреймворка Ultron для написания UI тестов на Android. Если пишите чисто нативно под Android на Kaspresso, то переход дело вкуса, но вот именно на Compose Multiplatform открывается вся мощь!
🔗 Обсуждение технологии в чате @ultron_framework
8:13 Стандартный фреймворк для UI тестов
16:00 Kaspresso
18:48 Тесты на Ultron
24:28 Сравнение с Google и Kaspresso
25:25 Интеграционные Compose тесты
28:10 Пример 1. Тест на разных ферймворках
40:46 2 интеграционный тест
41:35 useUnmergedTree в Google framework
44:41 Пример 2. Тест на разных ферймворкахю
1:00:56 Ultron, индексы по всему LazyList
1:07:36 Ultron, testTag - 2 способ поиска в LazyList
1:11:41 Allure report, Ultron и Kaspresso
1:23:15 Разница в allure report между ними(Ultron и Kaspresso)
1:31:07 1 тест RecyclerView на других фреймворках, Page Object
1:35:40 Ultron, 1 тест RecyclerView, Page Object
1:39:00 2 тест RecyclerView на других фреймворках, Page Object
1:42:38 Ultron, 2 тест RecyclerView, Page Object
1:53:00 Ultron, Сравнение тестов LazyList и RecyclerView
1:54:11 Ultron, RecyclerView features
2:01:50 Ultron, UI automator, сравнение с Google
2:06:15 Ultron, тест WebView
2:11:04 Ultron listeners (и далее внутрянка)
2:14:43 Ultron extensions
2:19:55 Ultron withAssertion extension
2:23:43 Ultron performOnViewForcibly
2:26:11 Ultron, View custom extensions
2:34:04 Ultron, Compose custom extensions
2:41:16 Ultron, Rules management
2:50:48 Ultron, test data for single test
#compose #тестирование #anroid #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Ultron - фреймворк для тестирования Android UI и Compose. Демо возможностей
Обзор фреймворка Ultron для написания UI тестов на Android
🔗 Код из видео https://github.com/open-tool/ultron/tree/demo
🔗 Ultron GitHub https://github.com/open-tool/ultron
🔗 Ultron Telegram группа https://news.1rj.ru/str/ultron_framework
🔗 Каналы "Android Broadcast"…
🔗 Код из видео https://github.com/open-tool/ultron/tree/demo
🔗 Ultron GitHub https://github.com/open-tool/ultron
🔗 Ultron Telegram группа https://news.1rj.ru/str/ultron_framework
🔗 Каналы "Android Broadcast"…
👍16
Лидер команды Яндекса делится опытом и рассказывает, какие трудности возникли при реализации кроссплатформенного проекта, а также чего лучше избегать в современной мобильной разработке.
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Forwarded from Kotlin Multiplatform Broadcast
🔥 На конференции по Аврора ОС объявили о поддержки 🏝 Kotlin Multiplatform и в скоро будущем будет работать и ⚙️ Compose Multiplatform
Как только станет доступно попробовать - подключу в свой проект Frame.io
Источник - @AuroraDevelopers
#kmp #аврораос
Как только станет доступно попробовать - подключу в свой проект Frame.io
Источник - @AuroraDevelopers
#kmp #аврораос
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33
Если вы Android разработчик, то вряд ли вам это пригодится, а вот для незнакомых глубоко с платформой от Google точно будет полезно
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Все новинки расскажу отдельными постами в @compose_broadcast, а именно:
👉 Autofill
👉 ресайзинг текста под контейне
👉 новое API для отслеживания Composable на экране
👉 анминирование границ Composable
👉 стабилизация API (убрали экспериментальные аннотации)
👉 ContextualFlowRow и ContextualFlowColumn теперь deprecated, им на замену используйте FlowRow и FlowColumn
👉 диалоги теперь учитывают режим экрана edge-to-edge
👉 упростили тестирование ClickableText
👉 появилась возможность кастомизации overscroll
Свежий BOM для новых версий
implementation(platform("androidx.compose:compose-bom:2025.04.01"))#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39
Теперь через Modifier можно указать что за контент будет в поле ввода.
TextField(
state = rememberTextFieldState(),
modifier = Modifier.semantics {
contentType = ContentType.Username
}
)
Также появилась поддержка автоматического сохранения логина/пароля. Автоматически будет вызывать при уходе с экрана, но вы также можете сами контролировать процесс. Больше подробностей в документации
#compos #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
This media is not supported in your browser
VIEW IN TELEGRAM
В Jetpack Compose 1.8.0 появилась возможность автоматического изменения размера текста чтобы вписаться в заданные размеры
#compose #android
#compose #android
👍135
Compose Broadcast
В Jetpack Compose 1.8.0 появилась возможность автоматического изменения размера текста чтобы вписаться в заданные размеры #compose #android
Пример настройки autoresize текста:
#compose #android
Box {
BasicText(
text = "Hello World",
maxLines = 1,
autoSize = TextAutoSize.StepBased(
minFontSize = TextAutoSizeDefaults.MinFontSize,
maxFontSize = TextAutoSizeDefaults.MaxFontSize,
stepSize = 0.25.sp
)
)
}#compose #android
👍49
В Jetpack Compose 1.8.0 появились новые опции для сокращения текста если он не влазит. Как это выглядит смотрите в комментариях к посту
#compose
val text = "This is a long text that will overflow"
Column(Modifier.width(200.dp)) {
Text(text, maxLines = 1, overflow = TextOverflow.Ellipsis) // была
Text(text, maxLines = 1, overflow = TextOverflow.StartEllipsis) // новая
Text(text, maxLines = 1, overflow = TextOverflow.MiddleEllipsis) // новая
}
#compose
👍65
UPD Расширилась поддержка HTML в AnnotatedString. Теперь поддерживаются буллеты
Text(
AnnotatedString.fromHtml(
"""
<h1>HTML content</h1>
<ul>
<li>Hello,</li>
<li>World</li>
</ul>
""".trimIndent()
)
)
#compose
👍76
Если вам нужно отслеживать положении 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
👍70
This media is not supported in your browser
VIEW IN TELEGRAM
В Compose 1.8 появилась возможность анимировать границы Composable с помощью modifier animateBounds
#compose #анимация
#compose #анимация
👍79