Telegram Web
#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/Runwww.tgoop.com/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/Runwww.tgoop.com/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/Runwww.tgoop.com/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
#Article #Medium #Performance #Recomposition

Optimizing Recomposition in Jetpack Compose: Stability System

Одной из ключевых особенностей Compose является Умная рекомпозиция (Smart recomposition), которая заключается в пропуске рекомпозиции для тех Composable функций, у которых значения входных параметров не изменились и являются стабильными.

В этом смысле, стабильность является достаточно важной концепцией, потому как именно она гарантирует, что Compose Runtime сможет безопасно считывать и сравнивать эти входные данные, чтобы, при необходимости, пропустить рекомпозицию.

Подробнее о том, что же всё-таки такое “стабильность” и “stability system” в Compose — в сегодняшней статье.
👍51
​​#Article #Blog #Performance

6 Jetpack Compose Guidelines to Optimize Your App Performance

Статья с большим количеством советов (разбитых на 6 правил) о том, как можно значительно улучшить производительность вашего приложения на Compose. Авторы затрагивают такие темы как стабильность классов (о которой был предыдущий пост), правильный вынос state-ов (State hoisting), и много чего ещё. Рекомендую к прочтению.
👍5🔥1
#Article #Blog #Compose

Custom Layouts, measuring policies, and BoxWithConstraints in Jetpack Compose

Небольшая статья о том, как происходит определение размеров дочерних элементов при создании своего Layout-а в Compose, при чём тут MeasurePolicy, а также чем так необычен BoxWithConstraints. Обо всем этом — в сегодняшнем материале.
4👍3🔥1
​​#Release #Compose #Changelog

Compose Release Digest (05.08 — 12.09)

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

🔹RC/Stable🔹

🔸🔸Compose Compiler (1.3.0 — 1.3.1)
🔸🔸Compose Animation/Foundation/Material/Runwww.tgoop.com/UI (1.2.1)
▫️ Несколько минорных изменений по сравнению с 1.2.0

🔹Alpha/Beta🔹

🔸🔸Compose Animation/Foundation/Material/Runwww.tgoop.com/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
🔥3👍21
#Article #Blog #Compose

Measuring and drawing in Jetpack Compose

В дополнение к предыдущей статье об определении размеров дочерних элементов, в сегодняшнем материале автор разбирает как устроены измерение и отрисовка самого Composable компонента.
1👍1
#Article #Blog #Compose

Jetpack Compose Accompanist TwoPane

Интересная статья от разработчиков Microsoft, в которой они разбирают TwoPane — UI компонент из библиотеки Accompanist, предназначенный для разработки адаптивных интерфейсов под foldable устройства.
🔥31👍1
#Article #Medium

Building A Jetpack Compose Window With AbstractComposeView

Бывают кейсы, когда нужно открыть Composable контент поверх Android View (при постепенной интеграции Compose в существующий проект), и для этого не подойдут Dialog или Popup. В таком случае автор статьи предлагает использовать кастомное решение, основанное на AbstractComposeView и называет его "Jetpack Compose Window".
🔥5👍2👎1
​​#Release #Compose #Changelog

Compose Release Digest (13.09 — 12.10)

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

🔹RC/Stable🔹

🔸🔸Compose Compiler (1.3.2)
▫️Добавлена поддержка версий Kotlin 1.7.20
🔸🔸Compose Animation/Foundation/Material/Runwww.tgoop.com/UI (1.3.0-rc01)
▫️
Добавлен новый API Hyphens для поддержки автоматических переносов при работе с текстом. (Подробнее)
▫️Улучшены Snapping-анимации. (Подробнее)
▫️Исправлена утечка памяти у LazyColumn из-за невызова метода onModifierLocalsUpdated. (Подробнее)

🔹Alpha/Beta🔹

🔸🔸Compose Animation/Foundation/Material/Runwww.tgoop.com/UI (1.3.0-beta03)
▫️В LazyStaggeredGrid добавлены параметр contentPadding и поддержка различных Arrangement. (Подробнее тут и тут)
▫️Добавлен класс MutableWindowInsets для удобного изменения WindowInsets без рекомпозиции. (Подробнее)
▫️PullRefresh из библиотеки Accompanist мигрировал в Material SDK. (Подробнее)
▫️Параметр функций remember и rememberCoroutineScope теперь crossinline.
▫️Добавлен LineBreak API для кастомизации переносы строк при работе с текстом. (Подробнее)
▫️Исправлена проблема, при которой Activity BackHandler из AndroidX не работал с Dialog composable. (Подробнее)

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

▫️Paging-Compose обновлен до версии 1.0.0-alpha16
▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версии 1.1.0-alpha07
▫️Compose Material 3 (Material You) обновлен до версии 1.0.0-rc01
👍3🔥21
2025/07/14 10:40:08
Back to Top
HTML Embed Code: