Telegram Web Link
#Article #Medium #Compose

ViewCompositionStrategy Demystified

Существует такое непростое, но весьма важное понятие в Compose, как ViewCompositionStrategy. Если вкратце — это различные стратегии, используемые ComposeView и AbstractComposeView для определения того, когда и как должна очищаться композиция.

В статье автор разбирает что ViewCompositionStrategy из себя представляет, а также рассказывает о том, как правильно выбрать подходящую стратегию для конкретного UseCase-а.
#реклама

Онлайн-мероприятие Kaspersky Tech «Выйти в open source и нанести всем пользу». Начало 24 мая 16.00 по мск

На примере популярного open source фреймворка для тестирования пользовательского интерфейса Android расскажем, какой путь предстоит пройти контрибьюторам и какие подводные камни их могут ждать.

Что дает Kaspresso:

- Стабильность: устраняет flakyness тестов: они не ломаются на N+1й попытке

- Ускорение библиотек тестов пользовательского интерфейса: некоторые команды UI Automator выполняются в 10 раз быстрее

- Читаемость кода, читаемость логов: код делается значительно короче и читабельнее, а сам фреймворк пишет собственные и подробные логи

- Перехватчики: свои перехватчики поведения Kaspresso для обработки сбоев, чтобы добавлять настраиваемые действия и преодолеть ненадежные операции

- Конфигурируемость: можно самостоятельно настроить любую часть Kaspresso

Регистрируйтесь по ссылке на сайте: https://kas.pr/b54o
#Article #Medium #Recomposition #Compose

Exercises in futility: Jetpack Compose Recomposition

Очередная полезная статья на тему рекомпозиции. В данном случае автор на простом примере разбирает неочевидные кейсы, в которых может происходить излишняя рекомпозиция, а также дает советы по её избежанию.
Мы тут с ребятами собрали "Джентльменский набор мобильного разработчика" — 8 полезных Telegram каналов разной тематики, связанные с мобильной разработкой.

Сохраняйте папку для удобства — https://www.tg-me.com/addlist/k3QvI6MeX49kMjhi

P.S. если вдруг ссылка не открывается, проверьте, что ваш Telegram-клиент обновлен до последней версии.
​​#Release #Compose #Changelog

Compose Release Digest (19.04 — 02.06)

Традиционный дайджест по основным изменениям релизов библиотек фреймворка за последние полтора месяца, среди которых:

🔹RC/Stable🔹

🔸🔸Compose Compiler (1.4.6 — 1.4.7)
▫️Добавлена поддержка версии Kotlin 1.8.21.
▫️Требуемая версия Java понижена с 17 до 11.
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.4.2 — 1.4.3)
▫️Исправлена проблема, при которой AndroidView мог отображаться неверно при использовании с некоторыми модификаторами. (Подробнее)
▫️Исправлен баг, из-за которого клавиатура не отображалась для текстовых полей внутри диалогов, не созданных через Dialog composable. (Подробнее)

🔹Alpha/Beta🔹

🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.5.0-alpha03 — 1.5.0-beta01)
▫️Изменено дефолтное поведение SubcomposeLayout в LookaheadScope, внутри которого нет условных slot-блоков (как TabRow, Scaffold или BoxWithConstraints), что позволяет ему лучше работать с lookahead анимациями.
▫️В AnimatedContent добавлена поддержка contentKey. (Подробнее)
▫️В ходе рефакторинга значительно сокращено количество выделений памяти в рекомпозиции, анимациях и AndroidComposeView. (Подробнее)
▫️FlowColumn/FlowRow теперь inline. (Подробнее)
▫️LazyStaggeredGrid API теперь stable. (Подробнее)
▫️Добавлены FlowRowScope и FlowColumnScope для дочерних элементов FlowRow и FlowColumn соответственно. (Подробнее)
▫️Добавлен экспериментальный модификатор Modifier.animateItemPlacement() для анимирования изменения/переупорядочивания позиций элементов при работе с LazyStaggeredGrid. (Подробнее)
▫️В BasicText добавлен отдельный лямбда-параметр color. Спорное решение, но, по заявлению разработчиков, это позволит эффективнее задавать цвет текста, а также его анимировать. (Подробнее)
▫️В методы DrawScope.drawText, Paragraph.paint и MultiParagraph.paint добавлен параметр BlendMode для поддержки различных алгоритмов смешивания при рисовании текста на Canvas. (Подробнее).
▫️TextMeasurer и связанные с ним API больше не являются экспериментальными. (Подробнее).
... и много всего ещё.

Также были обновлены и различные дополнения Compose, а именно:

▫️constraintlayout-compose обновлен до версии 1.1.0-alpha10
▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версий 1.0.0-alpha05 и 1.2.0-beta01
▫️Paging-Compose обновлен до версии 1.0.0-alpha20
▫️Compose Material 3 (Material You) обновлен до версии 1.2.0-alpha02
#GoogleIO #Featured #AndroidDevelopers #JetpackCompose

[Eng] Debugging Jetpack Compose

Чрезвычайно полезное видео с прошедшего Google I/O 2023, в котором разбирается такая тема как отладка Jetpack Compose. Почему происходит (или не происходит) рекомпозиция, как оптимизировать производительность экрана, а также как обычный лог может сам стать причиной рекомпозиции — обо всем этом в сегодняшнем видео.
​​#Libs #Compose

Compose Sensors — удобная обёртка над Android Sensor API для работы с датчиками в Jetpack Compose.

P.S. Решил добавить новую рубрику на канал, которая будет посвящена различным библиотекам из мира Jetpack Compose. Таким образом и вы не пропустите какое-нибудь полезное решение от комьюнити, и контента на канале станет больше.
Всем привет! За последние несколько месяцев к каналу присоединилось много новых людей, а поэтому я думаю нам стоит еще раз немного познакомиться.

Меня зовут Григорьев Дмитрий, я автор канала Mobile Compose, а также, как и многие из вас, мобильный разработчик, который видит огромный потенциал в Jetpack Compose. Периодически выступаю с докладами на конференциях, и (реже) пишу статьи.

Mobile Compose — это не только канал о Compose, но еще и вполне активно развивающееся сообщество. Нас уже больше 1700, и на этом мы не останавливаемся. Спасибо вам за поддержку!

Также напоминаю, что у нас есть чатик, в котором вы можете задать интересующий вопрос, или наоборот, поделиться полезной информацией с другими — @mobile_compose_chat.
#GoogleIO #Featured #AndroidDevelopers #JetpackCompose

What's new with TV and intro to Compose

Еще одно видео с прошедшего Google I/O 2023, на этот раз с разбором возможностей интеграции Compose в разработку приложений для TV. Даже куски кода с новым API показали.
#Article #Habr #Compose

Осознанная оптимизация Compose

Статья с перечислением достаточно большого количества оптимизаций кода на Compose. Можно проходить прямо по списку и подмечать те или иные моменты для улучшения вашего приложения.

Любопытное наблюдение: в последнее время стало явно заметно, что после появления у многих проблем с доступом к Medium, стремительно активизировался поток статей про Compose на Habr.
​​#Предложка #Libs #Compose

Подборка Compose библиотек от подписчика (Часть 1)

Не так давно на канале запустилась новая рубрика с разбором различных Compose библиотек, и вот один из подписчиков (@B1ays) поделился в нашем чате своим рекомендуемым списком:

▫️Compose Markdown — добавляет элемент MarkdownText(), имеющий полную поддержку формата Markdown.
▫️Compose Shimmer — добавляет модификатор .shimmer(), создающий у элемента эффект мерцания (аналог Shimmer от Meta).
▫️Material Motion compose — реализация motion system для Compose.
▫️ColorPicker compose — добавляет элементы ImageColorPicker (для выбора цвета с изображения) и HsvColorPicker (колесо выбора цвета).
▫️Landscapist — загрузка изображений полученных из сети в Compose интерфейсе. Умеет работать с Glide, Picasso и Fresco.
▫️Camposer — Compose обёртка для API камеры. Предоставляет возможность быстрой интеграции камеры в приложение

Напоминаю, что у нас есть чат, где каждый из вас также может предложить что-нибудь интересное, или же просто получить ответ на интересующий вопрос — @mobile_compose_chat.
​​#Предложка #Libs #Compose

Подборка Compose библиотек от подписчика (Часть 2)

Продолжение предыдущего поста о Compose библиотеках:

▫️Charty и Vico — библиотеки для работы с графиками и диаграммами разных видов.
▫️Pagecurl — добавляет эффект "книжной страницы" при перелистывании.
▫️Orbital — содержит различные анимации (к примеру, shared element transition).
▫️Seeker — добавляет свою реализацию SeekBar с высоким уровнем кастомизации.
▫️Compose Rich Editor — добавляет полностью кастомизируемый редактор Rich Text
▫️Rebugger (плагин для IDE) — библиотека для отладки UI, позволяющая отслеживать рекомпозиции, а так же причины которые их вызывают. Информацию выводит в Logcat.
​​#Tools #Compose

Jetpack Compose SVG to Compose converter

Появился онлайн конвертер SVG файлов (можно загрузить как SVG код так и файл целиком) в Composable функции. В некоторых кейсах вполне полезный инструмент.
Похоже, что убийца Twitter новое приложение Threads от Meta полностью написано на Compose. И всё это при своём живом React Native 🙃
Такие дела.

#News #Compose #Offtop
#Article #Medium #Canvas

Plotting Gradient Bezier Trends with Jetpack Compose

Новая (и очередная) статья о рисовании графика на канвасе в Compose при помощи кривых Безье.
Для тех, у кого проблемы с открытием Medium - зеркало.
​​#Libs #Compose

compose-bandage-reveal — интересный пример реализации эффекта "наклейки" для Swipe-To-Dismiss жестов.
#Article #Medium #Libs

Introducing Nibel: A Navigation Library for Adopting Jetpack Compose in Fragment-Based Apps

Команда Turo Engineering представила Nibel — навигационную open-source библиотеку для интеграции Jetpack Compose в Android-приложения на основе фрагментов. Используя возможности Kotlin Symbol Processor (KSP), Nibel обеспечивает типобезопасный способ навигации между экранами в следующих сценариях:
▫️fragmentcompose
▫️composecompose
▫️composefragment
2025/07/08 09:11:16
Back to Top
HTML Embed Code: