Mobile Compose – Telegram
Mobile Compose
2.91K subscribers
134 photos
4 videos
315 links
Твой главный путеводитель в мир Jetpack Compose и Compose Multiplatform.

Android XR: @android_xr
Личный блог: @grigorievdy_blog

Автор: @grigorievdy

Поддержать канал: https://news.1rj.ru/str/mobile_compose?boost
Download Telegram
#Article #Blog

Jetpack Compose Effect Handlers

Статья от Jorge Castillo (автора книги Jetpack Compose Internals), в которой он рассказывает о том, что такое сайд-эффекты в Compose, каких типов они бывают, а также как их “подружить” с Third-party библиотеками.
👍41
#реклама

Mobius — конференция по мобильной разработке от JUG Ru Group, в формате online+offline 🔥

▫️Online-часть: 25–27 мая.
▫️Offline-день: 22 июня.

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

Также на конференции будут выступления, посвященные Compose. С одним из таких докладов буду выступать я сам, в рамках которого расскажу о том, как устроена одна из ключевых концепций тулкита — позиционная мемоизация.

А при использовании промокода mobilecompose2022JRGpc вы сможете приобрести персональный билет со скидкой.

Билеты и подробности на сайте.
👍4🔥1👏1
#Release #Stable #Changelog

Релизы Jetpack Compose 1.2.0-alpha07 – 1.2.0-alpha08

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

▫️AnimatedImageVector теперь поддерживает параметры repeatCount и repeatMode. (Подробнее)
▫️Добавлен новый PinnableParent API для работы с элементами Lazy списков. (Подробнее)
▫️Добавлен KeyboardType.Decimal в качестве альтернативы Keyboard.Number. (Подробнее)
▫️В Composer добавлено поле recomposeScopeIdentity, что позволило убрать аннотацию @OptIn(InternalComposeApi::class) из класса RecompositionHandler. (Подробнее)

Новое обновление коснулось и различных дополнений, а именно:

▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версии 1.0.0-alpha20
▫️Compose Material 3 (Material You) обновлен до версии 1.0.0-alpha09
👍3
#Article #Blog

Productivity hack to save tens of engineering hours when working with Jetpack Compose

Любопытная статья с кликбейтным заголовком от Vinay Gaba о том, как микрооптимизация автодополнения кода вашего проекта на Compose поможет сэкономить десятки (по мнению автора) часов работы в год.
👍2👎1
#реклама #conf

На грядущей конференции Mobius 2022 Spring будут представлены целых 3 доклада про Compose, на которых будут освещены такие темы как:

▫️«Positional memoization, или Как работает одна из главных концепций Jetpack Compose»
▫️«Анимации в Compose»
▫️«Декларативный UI. Flutter vs SwiftUI vs Jetpack Compose»

Конференция пройдет 25–27 мая на 80% в онлайне, а 22 июня в Санкт-Петербурге будет offline-день, на котором соберутся все, кто соскучился по живым выступлениям, дискуссионным зонам и тусовкам.

Найти полную программу и купить билеты можно на сайте. А по этому промокоду вы получите скидку на персональный билет: mobilecompose2022JRGpc
🔥5
#Video #Youtube #GoogleIO

Performance best practices for Jetpack Compose

Доклад с прошедшего Google I/O 2022, в котором спикеры рассказывают о лучших практиках Jetpack Compose в отношении производительности, а также о связанных с этим распространённых ошибках и способах их избежать.
👍5👎1
#реклама #conf

Бесплатный Community Day на Mobius 2022 Spring!

Друзья, отличные новости для тех, кто следит за конференцией, но не смог поучаствовать в ней в этот раз. Команда организаторов и Программный комитет Mobius решили поделиться частью контента и сделать доступ к третьему дню конференции (27 мая) свободным

В билет бесплатного дня входят:
▫️ 6 докладов, в том числе и мой доклад про Compose.
▫️ Дискуссии после каждого доклада.
▫️ Возможность поучаствовать в играх, квизах, конкурсах и других активностях от партнеров конференции, где можно не только круто провести время, но и получить ценные призы.
▫️ Чаты, где сидят сотни ваших коллег со всего мира.

Для участия в Community Day нужно только зарегистрироваться — для этого переходите по ссылке.
🔥2😱1
#Article #Medium

Jetpack Compose under the hood: Touch Events

Интересная статья, в которой автор разбирает как работает обработка Touch-событий в Compose, а также сравнивает эту схему с существующей в Android Views фреймворке.

💡P.S. Изначально статья была написана в сентябре 2021 года для Compose 1.0.0, поэтому какая-то информация могла измениться
👍2👎1
#Release #Stable #Changelog

Релизы Jetpack Compose 1.2.0-beta01 – 1.2.0-beta03

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

▫️Добавлен набор Easing-функций (таких как EaseIn, EaseInQuart, EaseInSine и др.) для работы с анимациями. (Подробнее)
▫️Добавлены экспериментальные функции IntervalList и MutableIntervalList для представления списка при помощи различных интервалов (наподобие того, как это реализовано в LazyColumn с различными вызовами item/items). (Подробнее)
▫️LineHeightBehavior, LineVerticalAlignment и LineHeightTrim переименованы в LineHeightStyle, LineHeightStyle.Alignment и LineHeightStyle.Trim соответственно.
▫️В TextStyle и SpanStyle добавлен аттрибут Brush, что позволяет использовать градиент при отрисовке текста. (Подробнее)
▫️Добавлен новый экспериментальный LazyLayout API, которое позволит создавать свои собственные компоненты, такие как LazyColumn из LazyVerticalGrid. (Подробнее)
▫️Исправлена ошибка неправильной отрисовки BottomSheetScaffold. (Подробнее)
▫️Представлен новый экспериментальный кроссплатформенный API для написания тестов — ComposeUiTest.🔥

Новое обновление коснулось и различных дополнений, а именно:

▫️ConstraintLayout-compose обновлен до версии 1.0.1
▫️Paging-Compose обновлен до версии 1.0.0-alpha15
▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версии 1.0.0-beta03
▫️Compose Material 3 (Material You) обновлен до версии 1.0.0-alpha13
👍7👎1
#Article #Medium #Animation

Easing in to Easing Curves in Jetpack Compose

В прошлом дайджесте я писал про новый набор Easing-функций для работы с анимациями, который добавили в одном из последних бета-релизов, а уже спустя несколько дней, от ребят из Google появилась подробная статья с примерами о том, как правильно их использовать.
🔥3
#Release #RC #Changelog

Релизы Jetpack Compose 1.2.0-rc01 – 1.2.0-rc02

Очередной дайджест по основным изменениям двух последних RC релизов фреймворка, среди которых:

▫️Easing-функции, добавленные недавно, теперь не экспериментальные. (Подробнее)
▫️Представлен экспериментальный OverscrollEffect, позволяющий создавать собственные эффекты прокрутки.
▫️Новые функции (withKeysDown, withKeysToggled и др.) добавлены в KeyInjectionScope для инжекта нажатий клавиш в тот момент, когда другие клавиши уже удерживаются нажатыми. (Подробнее)
▫️Функция runComposeUiTestWithoutActivity переименована в runEmptyComposeUiTest. (Подробнее)
▫️Добавлено новое API checkScrollableContainerConstraints, позволяющее ограничивать использование вложенных scrollable-контейнеров. Может пригодиться при работе с LazyLayout. (Подробнее)

Новое обновление коснулось и различных дополнений, а именно:

▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версии 1.0.0-rc02
👍5👎1
#Article #Medium

Avoid Race Conditions in StateFlow

В настоящее время, когда Compose набирает обороты, одним из наиболее популярных решений при выборе архитектурного подхода является MVI + StateFlow. В статье автор рассказывает о том, как при таком решении можно получить Race condition, а также что нужно делать, чтобы это избежать.
👍8👎2
#Article #Blog #Google

Independent versioning of Jetpack Compose libraries 🔥

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

К примеру:
▫️Compose Compiler ➡️ получила обновление до версии 1.2.0 (stable) с поддержкой Kotlin 1.7.0
▫️Compose Animation/Foundation/Material/Runtime/UI ➡️ получили сразу по два обновления — 1.2.0-rc03 и 1.3.0-alpha01

P.S. Также совсем скоро на канале выйдет дайджест в обновленном формате, в котором рассмотрим, какие изменения принесли вышедшие релизы.
🔥6👍1
#Article #Medium

A better way to pass Data from Api to Composable

Автор статьи поднимает такую тему, как передача данных, полученных из API, в Composable функции, а также объясняет, почему это плохая практика, и предлагает свой подход к решению этого вопроса.
👎6👍3
#Article #Medium

Introducing Jetpack Compose’s New Layout: “LookaheadLayout”

Вместе с появлением новой альфа версии Jetpack Compose (1.3.0-alpha01) API фреймворка пополнился новым и уже горячо обсуждаемым layout-ом — LookaheadLayout. Если кратко, это первый layout в Compose, способный отслеживать кадры используемой анимации, при помощи чего, к примеру, легко можно реализовать анимацию типа “Shared Element Transition”. Подробнее о том, как работает этот компонент — в сегодняшней статье.
👍62🔥2🤔2
#Article #Blog #UI

Drawing custom text spans in Compose UI

Автор статьи, ориентируясь на разнообразные подчеркивания текста в приложении BuzzKill, решил вручную реализовать их в Jetpack Compose. Результат - небольшая готовая библиотека ExtendedSpans. Об этапах реализации, а также достигнутых результатах — в сегодняшней статье.
👍5🔥2
#Article #Blog

movableContentOf and movableContentWithReceiverOf

Не так давно Jorge Castillo (автор книги Jetpack Compose Internals) создал блог “Effective Android”, в котором он публикует различные полезные материалы по Android разработке (естественно большая часть посвящена Compose).
В одной из таких статей разбираются функции movableContentOf и movableContentWithReceiverOf, которые позволяют нам сохранять состояние UI-контента и передавать его в последующие вызовы.

▫️P.S. В одном из предыдущих постов мы уже частично разбирали movableContentOf , может помочь для лучшего понимания
▫️P.S.S. В своем недавнем докладе я также уделял внимание этому механизму (ссылка с таймкодом)
👍4🔥2
​​#Release #Compose #Changelog

Compose Release Digest (29.06 — 04.08)

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

🔹RC/Stable🔹

🔸🔸Compose Compiler (1.2.0)
▫️ Добавлена поддержка версий Kotlin 1.7.0
🔸🔸Compose Animation/Foundation/Material/Runtime/UI (1.2.0-rc03 — 1.2.0)
▫️ В AnimatedImageVector добавлена поддержка repeatCount и repeatMode.
▫️ LazyVerticalGrid и LazyHorizontalGrid теперь stable.
▫️ Добавлен так называемый “Focus-driven-scrolling” для Lazy-списков при помощи нового BeyondBoundsLayout API.

🔹Alpha/Beta🔹

🔸🔸Compose Compiler (1.3.0-beta01 — 1.3.0-rc02)
▫️Добавлена поддержка версий Kotlin 1.7.10
🔸🔸Compose Animation/Foundation/Material/Runtime/UI (1.3.0-alpha01 — 1.3.0-alpha02)
▫️Добавлен LookaheadLayout — новый layout, о котором уже был ранее пост на канале. (Подробнее)
▫️Добавлена возможность анимации cursorBrush компонента BasicTextField без необходимости перезапускать таймер курсора. (Подробнее)
▫️Исправлен баг с открытием клавиатуры, когда disabled текстовое поле находится в фокусе. (Подробнее)
▫️В DrawScope добавлена новая функция drawText, для отрисовки multi-styled текста на Compose Canvas. (Подробнее)
▫️Исправлена проблема с AnimatedVisibility из FloatingActionButton в Scaffold. (Подробнее)

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

▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него получили сразу два параллельных обновления — 1.0.0 и 1.1.0-alpha02
▫️Compose Material 3 (Material You) обновлен до версии 1.0.0-alpha15
👍8🔥31
#Article #Blog #Animation

Velocity Based Animation with Compose

Неплохая статья, в которой разбирается такая техника, как Velocity Based Animation (проще говоря “Анимация, основанная на скорости”), которая позоляет отслеживать скорость прокрутки списка и при помощи этого кастомизировать длительность применяемой анимации.
👍51
#Article #Medium #Performance

Comparing Jetpack Compose performance with XML

Статья с сравнением производительности Compose и XML-based экранов на основе таких показателей, как количество задержек отдельных кадров, а также скорость загрузки всей страницы. Материал особенно будет полезен для тех, кто собирается попробовать Jetpack Compose в production коде, но хотел бы для начала изучить результаты benchmark-ов.
7👍4🔥1