#Article #Medium #Compose
ViewCompositionStrategy Demystified
Существует такое непростое, но весьма важное понятие в Compose, как ViewCompositionStrategy. Если вкратце — это различные стратегии, используемые ComposeView и AbstractComposeView для определения того, когда и как должна очищаться композиция.
В статье автор разбирает что ViewCompositionStrategy из себя представляет, а также рассказывает о том, как правильно выбрать подходящую стратегию для конкретного UseCase-а.
ViewCompositionStrategy Demystified
Существует такое непростое, но весьма важное понятие в Compose, как ViewCompositionStrategy. Если вкратце — это различные стратегии, используемые ComposeView и AbstractComposeView для определения того, когда и как должна очищаться композиция.
В статье автор разбирает что ViewCompositionStrategy из себя представляет, а также рассказывает о том, как правильно выбрать подходящую стратегию для конкретного UseCase-а.
Medium
ViewCompositionStrategy Demystified
Learn what `ViewCompositionStrategy` is, why it’s needed, and how you can pick the right strategy for your use case to avoid state loss.
#реклама
Онлайн-мероприятие Kaspersky Tech «Выйти в open source и нанести всем пользу». Начало 24 мая 16.00 по мск
На примере популярного open source фреймворка для тестирования пользовательского интерфейса Android расскажем, какой путь предстоит пройти контрибьюторам и какие подводные камни их могут ждать.
Что дает Kaspresso:
- Стабильность: устраняет flakyness тестов: они не ломаются на N+1й попытке
- Ускорение библиотек тестов пользовательского интерфейса: некоторые команды UI Automator выполняются в 10 раз быстрее
- Читаемость кода, читаемость логов: код делается значительно короче и читабельнее, а сам фреймворк пишет собственные и подробные логи
- Перехватчики: свои перехватчики поведения Kaspresso для обработки сбоев, чтобы добавлять настраиваемые действия и преодолеть ненадежные операции
- Конфигурируемость: можно самостоятельно настроить любую часть Kaspresso
Регистрируйтесь по ссылке на сайте: https://kas.pr/b54o
Онлайн-мероприятие 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
Очередная полезная статья на тему рекомпозиции. В данном случае автор на простом примере разбирает неочевидные кейсы, в которых может происходить излишняя рекомпозиция, а также дает советы по её избежанию.
Exercises in futility: Jetpack Compose Recomposition
Очередная полезная статья на тему рекомпозиции. В данном случае автор на простом примере разбирает неочевидные кейсы, в которых может происходить излишняя рекомпозиция, а также дает советы по её избежанию.
Medium
Exercises in futility: Jetpack Compose Recomposition
Compose is fun. I do get the feeling that there are quite a few “gotchas” when working with it, though. The goal of this post is to understand how recomposition works, with a short real world…
Мы тут с ребятами собрали "Джентльменский набор мобильного разработчика" — 8 полезных Telegram каналов разной тематики, связанные с мобильной разработкой.
Сохраняйте папку для удобства — https://www.tg-me.com/addlist/k3QvI6MeX49kMjhi
P.S. если вдруг ссылка не открывается, проверьте, что ваш 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
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. Почему происходит (или не происходит) рекомпозиция, как оптимизировать производительность экрана, а также как обычный лог может сам стать причиной рекомпозиции — обо всем этом в сегодняшнем видео.
[Eng] Debugging Jetpack Compose
Чрезвычайно полезное видео с прошедшего Google I/O 2023, в котором разбирается такая тема как отладка Jetpack Compose. Почему происходит (или не происходит) рекомпозиция, как оптимизировать производительность экрана, а также как обычный лог может сам стать причиной рекомпозиции — обо всем этом в сегодняшнем видео.
YouTube
Debugging Jetpack Compose
Jetpack Compose has brought a whole new approach to developing Android apps and this brings a new set of techniques for debugging. Learn how to address common challenges when developing with Compose code, like why is (or isn’t!) my composable recomposing…
#Libs #Compose
Compose Sensors — удобная обёртка над Android Sensor API для работы с датчиками в Jetpack Compose.
P.S. Решил добавить новую рубрику на канал, которая будет посвящена различным библиотекам из мира Jetpack Compose. Таким образом и вы не пропустите какое-нибудь полезное решение от комьюнити, и контента на канале станет больше.
Compose Sensors — удобная обёртка над Android Sensor API для работы с датчиками в Jetpack Compose.
P.S. Решил добавить новую рубрику на канал, которая будет посвящена различным библиотекам из мира Jetpack Compose. Таким образом и вы не пропустите какое-нибудь полезное решение от комьюнити, и контента на канале станет больше.
Всем привет! За последние несколько месяцев к каналу присоединилось много новых людей, а поэтому я думаю нам стоит еще раз немного познакомиться.
Меня зовут Григорьев Дмитрий, я автор канала Mobile Compose, а также, как и многие из вас, мобильный разработчик, который видит огромный потенциал в Jetpack Compose. Периодически выступаю с докладами на конференциях, и (реже) пишу статьи.
Mobile Compose — это не только канал о Compose, но еще и вполне активно развивающееся сообщество. Нас уже больше 1700, и на этом мы не останавливаемся. Спасибо вам за поддержку!
Также напоминаю, что у нас есть чатик, в котором вы можете задать интересующий вопрос, или наоборот, поделиться полезной информацией с другими — @mobile_compose_chat.
Меня зовут Григорьев Дмитрий, я автор канала 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 показали.
What's new with TV and intro to Compose
Еще одно видео с прошедшего Google I/O 2023, на этот раз с разбором возможностей интеграции Compose в разработку приложений для TV. Даже куски кода с новым API показали.
YouTube
What's new with TV and intro to Compose
If you're a designer or developer building experiences for the living room, this material is for you. Discover how both Android TV and Google TV have grown this past year. Explore TV and Compose integrations, including scrollable containers, handling focus…
#Article #Habr #Compose
Осознанная оптимизация Compose
Статья с перечислением достаточно большого количества оптимизаций кода на Compose. Можно проходить прямо по списку и подмечать те или иные моменты для улучшения вашего приложения.
Любопытное наблюдение: в последнее время стало явно заметно, что после появления у многих проблем с доступом к Medium, стремительно активизировался поток статей про Compose на Habr.
Осознанная оптимизация Compose
Статья с перечислением достаточно большого количества оптимизаций кода на Compose. Можно проходить прямо по списку и подмечать те или иные моменты для улучшения вашего приложения.
Любопытное наблюдение: в последнее время стало явно заметно, что после появления у многих проблем с доступом к Medium, стремительно активизировался поток статей про Compose на Habr.
Хабр
Осознанная оптимизация Compose
Jetpack Compose — относительно молодая технология написания декларативного UI. Множество разработчиков даже не предполагают, что пишут неоптимальный код в такой критически важной части, и впоследствии...
#Предложка #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.
Подборка 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.
#GoogleIO #Featured #AndroidDevelopers #JetpackCompose
[Eng] Advanced state and side effects in Jetpack Compose
Большое видео от ребят из Google, посвященное работе со State и Side Effects API в Jetpack Compose. Тема достаточно важная для понимания, поэтому рекомендую к просмотру.
[Eng] Advanced state and side effects in Jetpack Compose
Большое видео от ребят из Google, посвященное работе со State и Side Effects API в Jetpack Compose. Тема достаточно важная для понимания, поэтому рекомендую к просмотру.
YouTube
Advanced state and side effects in Jetpack Compose
In this workshop you will learn advanced concepts related to State and Side Effects APIs in Jetpack Compose. We'll see how to create a state holder for stateful composables whose logic isn't trivial and how to create coroutines and call suspend functions…
#Предложка #Libs #Compose
Подборка Compose библиотек от подписчика (Часть 2)
Продолжение предыдущего поста о Compose библиотеках:
▫️Charty и Vico — библиотеки для работы с графиками и диаграммами разных видов.
▫️Pagecurl — добавляет эффект "книжной страницы" при перелистывании.
▫️Orbital — содержит различные анимации (к примеру, shared element transition).
▫️Seeker — добавляет свою реализацию SeekBar с высоким уровнем кастомизации.
▫️Compose Rich Editor — добавляет полностью кастомизируемый редактор Rich Text
▫️Rebugger (плагин для IDE) — библиотека для отладки UI, позволяющая отслеживать рекомпозиции, а так же причины которые их вызывают. Информацию выводит в Logcat.
Подборка 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 функции. В некоторых кейсах вполне полезный инструмент.
Jetpack Compose SVG to Compose converter
Появился онлайн конвертер SVG файлов (можно загрузить как SVG код так и файл целиком) в Composable функции. В некоторых кейсах вполне полезный инструмент.
#Article #Medium #Canvas
Plotting Gradient Bezier Trends with Jetpack Compose
Новая (и очередная) статья о рисовании графика на канвасе в Compose при помощи кривых Безье.
Для тех, у кого проблемы с открытием Medium - зеркало.
Plotting Gradient Bezier Trends with Jetpack Compose
Новая (и очередная) статья о рисовании графика на канвасе в Compose при помощи кривых Безье.
Для тех, у кого проблемы с открытием Medium - зеркало.
Medium
Plotting Gradient Bezier Trends with Jetpack Compose
Either Compose is elegant, or if you want to draw something with an Android View you have to inherit from the View and implement the onDraw…
#Video #Compose #Navigation
Навигируемся в Jetpack Compose
Доклад с осеннего Mobius 2022, посвященный одной из наиболее холиварных тем в Compose — выбору решения для навигации. В сравнении участвовали 4 основных библиотеки — Google Navigation, Appyx, Voyager и Modo.
Навигируемся в Jetpack Compose
Доклад с осеннего Mobius 2022, посвященный одной из наиболее холиварных тем в Compose — выбору решения для навигации. В сравнении участвовали 4 основных библиотеки — Google Navigation, Appyx, Voyager и Modo.
YouTube
Игорь Кареньков — Навигируемся в Jetpack Compose
Ближайшая конференция: Mobius 2025 Spring, 9–10 апреля, Москва + онлайн. Подробности и билеты: https://jrg.su/ojGU3B
— —
Есть несколько библиотек для реализации навигации в Jetpack Compose: google navigation, voyager, modo, appyx, но что выбрать и как понять…
— —
Есть несколько библиотек для реализации навигации в Jetpack Compose: google navigation, voyager, modo, appyx, но что выбрать и как понять…
Утренний опрос.
Хватает ли вам русскоязычного контента (статьи/видео/курсы), посвященного Compose, для полного понимания фреймворка?
Хватает ли вам русскоязычного контента (статьи/видео/курсы), посвященного Compose, для полного понимания фреймворка?
Anonymous Poll
12%
Да, хватает
11%
Да, но некоторые темы плохо или вообще не разобраны
19%
Контента много, но базового уровня
22%
Не хватает, хотелось бы больше структурированного материала
33%
Читаю документацию на английском
3%
Другой ответ (в комментариях)
#Libs #Compose
compose-bandage-reveal — интересный пример реализации эффекта "наклейки" для Swipe-To-Dismiss жестов.
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 обеспечивает типобезопасный способ навигации между экранами в следующих сценариях:
▫️fragment → compose
▫️compose → compose
▫️compose → fragment
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 обеспечивает типобезопасный способ навигации между экранами в следующих сценариях:
▫️fragment → compose
▫️compose → compose
▫️compose → fragment
Medium
Introducing Nibel: A Navigation Library for Adopting Jetpack Compose in Fragment-Based Apps
Smooth and seamless adoption of Jetpack Compose for your Android apps