#android #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
Обзор фреймворка 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://t.me/ultron_framework
🔗 Каналы "Android Broadcast"…
🔗 Код из видео https://github.com/open-tool/ultron/tree/demo
🔗 Ultron GitHub https://github.com/open-tool/ultron
🔗 Ultron Telegram группа https://t.me/ultron_framework
🔗 Каналы "Android Broadcast"…
👍16
Если вы 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
👍38
Теперь через 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
👍48
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
👍41❤1
Плюсы решения
👉 Компоненты без стилизации
👉 Поддержка доступности и навигации клавиатурой
👉 Простое API
👉 Одинаковое поведение на всех платформах
👉 Хорошая документация
👉 Все компоненты поддерживают все KMP таргеты Compose
#compose #kmp #composemp #android #ios #desktop #wasm #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Приложения с KMP и Compose Multiplatform для Android, iOS, Desktop, Web. Стек: Kotlin Inject, KStore, KotlinX библиотеки, Ktor, Coil, KMP Settings, Compose Desktop JVM Hot Reload
Автор - Константин Цховребов из JB команды KMP.
Скачать можно в Google Play, а вот в App Store не выкладывали.
#compose #kmp #kotlin #пример #android #desktop #ios #web #wasm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33
В
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
Самый простой способ попробовать новую версию - использовать BOM в Gradle
dependencies {
implementation(platform("androidx.compose:compose-bom-beta:2025.06.01")
}
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1
Самый простой способ попробовать новую версию - использовать BOM в Gradle
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.06.01")
}
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
В новой сборке исправили баги, а также добавили поддержку smart элементов в контекстных меню
Самый простой способ попробовать новую версию - использовать BOM в Gradle
dependencies {
implementation(platform("androidx.compose:compose-bom-beta:2025.06.02")
}
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5
This media is not supported in your browser
VIEW IN TELEGRAM
LazyTimetable - open source Jetpack Compose библиотека для реализация lazy расписания мероприятия или в школе/универе. Работает только на Android
#compose #android #opensource
#compose #android #opensource
👍17🤔13🔥3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Причина - куча багов, которые не получалось решить, а также на Compose писать проще.
По итогу реализовали свой Layout, чтобы сделать иерархию плоской и было меньше рекомпозиций.
@Composable
fun FastPaymentButton(
fastPaymentState: FastPaymentState,
modifier: Modifier = Modifier,
thumbContent: @Composable BoxScope.() -> Unit = {},
background: @Composable () -> Unit = DefaultFastPaymentButtonBackground,
// Параметры будут добавляться по мере обогащения слайдера фичами
onClick: () -> Unit = {},
onSwiped: () -> Unit = {},
) {
// Content
}
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50👍11
Вышла следующая стабильная версия UI фреймворка для Android. Что нового:
👉 Появилась модификаторы для работы с тенями Modifier.dropShadow() и Modifier.innerShadow(). Уже существующий Modifier.shadow() рисует тень за объектом, а новые модификаторы добавят тень внутри.
👉 Более производительный способ отслеживать положения элементов на экране с помощью Modifier.onLayoutRectChanged()
👉 Добавили поддержку скролла в двух направлениях сразу (например как скролл карты или фото). Используйте Draggable2D и Scrollable2D API
👉 Улучшили работу скролла скролл при использованием VIew с Compose
👉 Добавили опцию для включения большего количества информации при анализе крешей в Compose
class App : Application() {
override fun onCreate() {
Composer.setDiagnosticStackTraceEnabled(BuildConfig.DEBUG)
}
}
👉 Аннотации
@Stable
, @Immutable
и @StableMarker
выделили в отдельный артефакт runtime-annotation
, чтобы можно было использовать их в модулях без Compose👉 Новые аннотации @RememberInComposition и @FrequentlyChangingValue (подробнее в отдельном посте)
Много улучшений в LazyLayout
👉 Стабилизация API для создания собственных Lazy компонентов
👉 Значительное ускорение производительности скролла Lazy List и Lazy Grid благодаря механизму предзагрузки (prefetch). Надо использовать LazyLayoutCacheWindow
@Composable
private fun LazyColumnCacheWindowDemo() {
val dpCacheWindow = LazyLayoutCacheWindow(ahead = 150.dp, behind = 100.dp)
val state = rememberLazyListState(cacheWindow = dpCacheWindow)
LazyColumn(state = state) {
items(count) { Text(text = "$it", fontSize = 80.sp) }
}
}
Конечно же новая версия Compose - это повышение скорости работы и исправление багов для более плавного UI
Обновляем BOM файл в зависимостях вашего проекта для получения свежей версии:
// build.gradle.kts
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.08.00"))
}
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53❤6👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥8