uk
Feedback
Mobile Compose

Mobile Compose

Відкрити в Telegram

Твой главный путеводитель в мир Jetpack Compose и Compose Multiplatform. Android XR: @android_xr Личный блог: @grigorievdy_blog Автор: @grigorievdy Поддержать канал: https://t.me/mobile_compose?boost

Показати більше
2 992
Підписники
Немає даних24 години
-27 днів
+630 день
Архів дописів
#Article #Blog #Compose Measuring and drawing in Jetpack Compose В дополнение к предыдущей статье об определении размеров дочерних элементов, в сегодняшнем материале автор разбирает как устроены измерение и отрисовка самого Composable компонента.

​​#Release #Compose #Changelog Compose Release Digest (05.08 — 12.09) После небольшого перерыва возвращаемся с традиционным дайджестом по основным изменениям последних релизов библиотек фреймворка, среди которых: 🔹RC/Stable🔹 🔸🔸Compose Compiler (1.3.0 — 1.3.1) 🔸🔸Compose Animation/Foundation/Material/Runtime/UI (1.2.1) ▫️ Несколько минорных изменений по сравнению с 1.2.0 🔹Alpha/Beta🔹 🔸🔸Compose Animation/Foundation/Material/Runtime/UI (1.3.0-alpha03 — 1.3.0-beta02) ▫️Для функций Crossfade, animateAsState и Animatable добавлен новый опциональный параметр label. (Подробнее) ▫️В AnimationSpec добавлена функция atFraction, при помощи которой указанную продолжительность анимации можно делить на сегменты, которые можно в дальнейшем использовать для работы с ключевыми кадрами анимации. (Подробнее) ▫️TextInputService (show/hideSoftwareKeyboard) теперь deprecated. Вместо этого нужно использовать SoftwareKeyboardController. (Подробнее) ▫️Реализовано и задокументировано новое экспериментальное API для LazyStaggeredGrid. (Подробнее) ▫️Исправлена ошибка, из-за которой painterResource не обновлялся при изменении конфигурации. (Подробнее) ▫️FocusDirection.In и FocusDirection.Out теперь deprecated и заменены на FocusDirection.Enter и FocusDirection.Exit. (Подробнее) ▫️Исправлен баг, при котором Compose компилятор в некоторых случаях ошибочно помечал Unit типы как Composable. (Подробнее) Также были обновлены и различные дополнения Compose, а именно: ▫️Paging-Compose обновлен до версии 1.0.0-alpha16 ▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него получили сразу два параллельных обновления — 1.0.2 и 1.1.0-alpha05 ▫️Compose Material 3 (Material You) обновлен до версии 1.0.0-beta02

#Article #Blog #Compose Custom Layouts, measuring policies, and BoxWithConstraints in Jetpack Compose Небольшая статья о том, как происходит определение размеров дочерних элементов при создании своего Layout-а в Compose, при чём тут MeasurePolicy, а также чем так необычен BoxWithConstraints. Обо всем этом — в сегодняшнем материале.

​​#Article #Blog #Performance 6 Jetpack Compose Guidelines to Optimize Your App Performance Статья с большим количеством советов (разбитых на 6 правил) о том, как можно значительно улучшить производительность вашего приложения на Compose. Авторы затрагивают такие темы как стабильность классов (о которой был предыдущий пост), правильный вынос state-ов (State hoisting), и много чего ещё. Рекомендую к прочтению.

#Article #Medium #Performance #Recomposition Optimizing Recomposition in Jetpack Compose: Stability System Одной из ключевых особенностей Compose является Умная рекомпозиция (Smart recomposition), которая заключается в пропуске рекомпозиции для тех Composable функций, у которых значения входных параметров не изменились и являются стабильными. В этом смысле, стабильность является достаточно важной концепцией, потому как именно она гарантирует, что Compose Runtime сможет безопасно считывать и сравнивать эти входные данные, чтобы, при необходимости, пропустить рекомпозицию. Подробнее о том, что же всё-таки такое “стабильность” и “stability system” в Compose — в сегодняшней статье.

#Article #Medium #Performance Comparing Jetpack Compose performance with XML Статья с сравнением производительности Compose и XML-based экранов на основе таких показателей, как количество задержек отдельных кадров, а также скорость загрузки всей страницы. Материал особенно будет полезен для тех, кто собирается попробовать Jetpack Compose в production коде, но хотел бы для начала изучить результаты benchmark-ов.

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

​​#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

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

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

#Article #Medium Introducing Jetpack Compose’s New Layout: “LookaheadLayout” Вместе с появлением новой альфа версии Jetpack Compose (1.3.0-alpha01) API фреймворка пополнился новым и уже горячо обсуждаемым layout-ом — LookaheadLayout. Если кратко, это первый layout в Compose, способный отслеживать кадры используемой анимации, при помощи чего, к примеру, легко можно реализовать анимацию типа “Shared Element Transition”. Подробнее о том, как работает этот компонент — в сегодняшней статье.

#Article #Medium A better way to pass Data from Api to Composable Автор статьи поднимает такую тему, как передача данных, полученных из API, в Composable функции, а также объясняет, почему это плохая практика, и предлагает свой подход к решению этого вопроса.

#Video #Youtube #JetpackCompose Positional memoization, или Как работает одна из главных концепций Jetpack Compose На YouTube канале Mobius начали публиковать первые записи докладов с прошедшей конференции, среди которых появился и мой, в котором я рассказываю о том, как устроена одна из ключевых концепций Jetpack Composeпозиционная мемоизация. Приятного просмотра!

#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. Также совсем скоро на канале выйдет дайджест в обновленном формате, в котором рассмотрим, какие изменения принесли вышедшие релизы.

#Article #Medium Avoid Race Conditions in StateFlow В настоящее время, когда Compose набирает обороты, одним из наиболее популярных решений при выборе архитектурного подхода является MVI + StateFlow. В статье автор рассказывает о том, как при таком решении можно получить Race condition, а также что нужно делать, чтобы это избежать.

#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

#Article #Medium Easing in to Easing Curves in Jetpack Compose В прошлом дайджесте я писал про новый набор Easing-функций для работы с анимациями, который добавили в одном из последних бета-релизов, а уже спустя несколько дней, от ребят из Google появилась подробная статья с примерами о том, как правильно их использовать.

#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

#Article #Medium Jetpack Compose under the hood: Touch Events Интересная статья, в которой автор разбирает как работает обработка Touch-событий в Compose, а также сравнивает эту схему с существующей в Android Views фреймворке. 💡P.S. Изначально статья была написана в сентябре 2021 года для Compose 1.0.0, поэтому какая-то информация могла измениться

#реклама #conf Бесплатный Community Day на Mobius 2022 Spring! Друзья, отличные новости для тех, кто следит за конференцией,
#реклама #conf Бесплатный Community Day на Mobius 2022 Spring! Друзья, отличные новости для тех, кто следит за конференцией, но не смог поучаствовать в ней в этот раз. Команда организаторов и Программный комитет Mobius решили поделиться частью контента и сделать доступ к третьему дню конференции (27 мая) свободнымВ билет бесплатного дня входят: ▫️ 6 докладов, в том числе и мой доклад про Compose. ▫️ Дискуссии после каждого доклада. ▫️ Возможность поучаствовать в играх, квизах, конкурсах и других активностях от партнеров конференции, где можно не только круто провести время, но и получить ценные призы. ▫️ Чаты, где сидят сотни ваших коллег со всего мира. Для участия в Community Day нужно только зарегистрироваться — для этого переходите по ссылке.