Разбор (EN, 7м) сложностей тестирования UI на Compose со стандартным решением от Google.
Сделал автор библиотеки для тестирования Ultron и показывает как можно делать их удобнее
#автотесты #ui #compose #ultron #тестирование
Сделал автор библиотеки для тестирования Ultron и показывает как можно делать их удобнее
#автотесты #ui #compose #ultron #тестирование
👍8
Forwarded from Android Broadcast
Одно из официальных приложений-примеров Compose в Android - Jetcaster, обновили и добавили поддержку складных смартфонов, Chrome OS, больших экранов, Android TV и часов на WearOS. Также появились App Widget на Compose с помощью либы Glance
Подробно об процессе поддержки и шаринга кода между платформами читайте в статье (EN, 12м)
#compose #android #androidtv #wearos #foldable #ui #chromeos
Подробно об процессе поддержки и шаринга кода между платформами читайте в статье (EN, 12м)
#compose #android #androidtv #wearos #foldable #ui #chromeos
👍17
Разработчик RuStore рассказывает про разработанной концепции дизайн системы.
Содержание статьи:
👉 Что такое дизайн-система
👉 Почем не подойдет готовое
👉 Архитектура дизайн системы RuStore
👉 Демо приложение для дизайн системы
👉 Реализация дизайн системы в коде на Compose
#compose #android #rustore #ui
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
В следующей версии Jetpack Lifecycle добавили новую функцию, которая позволяет переопределить LifecycleOwner и задать максимальное состояние:
@Composable
fun LifecycleOwner(
maxLifecycle: State = RESUMED,
parentLifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
content: @Composable () -> Unit,
)
💡 Зачем это нужно?
Идея пришла из поддержки адаптивного UI в Jetpack Navigation 3. Теперь можно строить интерфейсы, которые одинаково хорошо работают и на смартфонах, и на больших экранах.
📌 Пример: многопанельный UI, где одна панель отображается, а вторая — скрыта, потому что не влезла на экран. Логично, что их Lifecycle будет разным. Но раньше стандартный LifecycleOwner был жёстко привязан к Activity или Fragment, без учета реальной видимости конкретного UI-компонента.
А вы уже видите, где можно применить эту фичу в своем проекте? Делитесь идеями в комментариях 👇
#compose #adaptive #ui
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔28🔥9
В Compose 1.9 появились новые аннотации на основе которых будут работать Android Lint проверки:
📝 Когда использовать:
- Если API возвращает состояние или изменяемый объект, который нужно переиспользовать между composition.
- Если возвращается объект, чья идентичность важна (например, ключ для другой API).
- Если создание объекта дорого по ресурсам и нужно кешировать.
📝 Как избежать лишних перерисовок:
- Используйте derivedStateOf — фильтруйте изменения состояния, реагируя только на нужные.
- Используйте snapshotFlow + LaunchedEffect — работайте с изменениями без рекомпозиции.
- В UI-компонентах читайте значение на стадии measure / layout / draw, чтобы вызывать только инвалидацию нужной фазы, а не всю рекомпозицию.
- Делайте анализ работы вашего кода, например через Layout Inspector
Всем рекомендую озаботится аннотированием общего API Compose кода ваших проектов и регулярно запускать Android Lint, чтобы предотвратить ошибки, негативно влияющие на скорость работы UI
#compose #ui #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35❤6