#kotlin #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
#android #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
Demeter создан для тех, кто пишет на Compose и задается вопросом «почему всё лагает?» Библиотека, разработанная командой мобильной разработки Яндекса, уже лежит в опенсорсе.
Что умеет:
👉 Показывает частоту и причины рекомпозиций
👉 Помогает понять, где и почему UI перестраивается
👉 Показывает время выполнения методов прямо во время работы
👉 Считает время переходов между экранами
👉 Анализирует создание объектов и потоки выполнения
🛠 Всё это — без ручного обвешивания кода и пересборок. Demeter внедряется на этапе компиляции. Используются Kotlin Compiler Plugin (анализ Compose до компиляции) и модификация байткода (в том числе для сторонних библиотек).
Я попробовал — выглядит как must-have инструмент для любого, кто пилит что-то серьёзное на Compose
Подробнее на Хабре
Исходники на GitHub
#compose #инструменты #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзор фреймворка 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://xn--r1a.website/ultron_framework
🔗 Каналы "Android Broadcast"…
🔗 Код из видео https://github.com/open-tool/ultron/tree/demo
🔗 Ultron GitHub https://github.com/open-tool/ultron
🔗 Ultron Telegram группа https://xn--r1a.website/ultron_framework
🔗 Каналы "Android Broadcast"…
Лидер команды Яндекса делится опытом и рассказывает, какие трудности возникли при реализации кроссплатформенного проекта, а также чего лучше избегать в современной мобильной разработке.
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Если вы Android разработчик, то вряд ли вам это пригодится, а вот для незнакомых глубоко с платформой от Google точно будет полезно
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Все новинки расскажу отдельными постами в @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
Теперь через Modifier можно указать что за контент будет в поле ввода.
TextField(
state = rememberTextFieldState(),
modifier = Modifier.semantics {
contentType = ContentType.Username
}
)
Также появилась поддержка автоматического сохранения логина/пароля. Автоматически будет вызывать при уходе с экрана, но вы также можете сами контролировать процесс. Больше подробностей в документации
#compos #android
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Broadcast
В Jetpack Compose 1.8.0 появилась возможность автоматического изменения размера текста чтобы вписаться в заданные размеры #compose #android
В 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
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))
}