Mobile Compose
رفتن به کانال در Telegram
Твой главный путеводитель в мир Jetpack Compose и Compose Multiplatform. Android XR: @android_xr Личный блог: @grigorievdy_blog Автор: @grigorievdy Поддержать канал: https://t.me/mobile_compose?boost
نمایش بیشتر2 943
مشترکین
+224 ساعت
-17 روز
-930 روز
آرشیو پست ها
2 943
#Featured #AndroidDevSummit #Compose
UI improvements in Compose
Значительная часть докладов на прошедшем AndroidDevSummit была посвящена различным аспектам работы с UI в Jetpack Compose.
Собрал для вас все видео в одном месте:
▫️Reimagining designer-developer handoff: Introducing Relay — презентация инструмента Relay (подробнее о нём рассказывал ранее).
▫️5 quick animations to make your Compose app stand out — краткая демонстрация пяти простых анимаций, которые гарантированно улучшат восприятие вашего приложения.
▫️Styling text in Compose — примеры стилизации текста при помощи Material API.
▫️Write your first Compose UI test — введение в написание вашего первого UI теста для Compose.
▫️Material You in Compose apps — знакомство с Material 3 Jetpack Compose библиотекой (которая теперь Stable), а также разбор миграции с Material 2.
▫️State of the art of Compose tooling — знакомство с инструментами Compose Tooling в Android Studio, а также разбор примеров работы с ними.
▫️Custom layouts and graphics in Compose — большой (по сравнению с остальными) доклад по созданию собственных layout-ов в Compose.
2 943
#Featured #AndroidDevSummit #Compose
Reimagining designer-developer handoff: Introducing Relay
Одним из самых ярких анонсов Google с прошедшего Android Dev Summit однозначно стал Relay — новый UI инструмент для перевода моделей дизайна из Figma в код Jetpack Compose, а также их дальнейшей синхронизации. Подробнее о том, как работает новинка — в небольшом видеодокладе с конференции.
A также:
▫️Страница Relay на developer.android.com
▫️Страница Relay на material.io
2 943
#Article #Medium
How To Handle ViewModel One-Time Events In Jetpack Compose
Автор статьи разбирает такую тему, как обработка one-time событий в приложении с Compose, а также сравнивает классический подход с использованием библиотеки Compose-State-Events.
P.S. Для тех, кому неудобно читать в текстовом варианте, добавил также видеоверсию материала.
2 943
#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/Runtime/UI (1.3.0-rc01)
▫️Добавлен новый API Hyphens для поддержки автоматических переносов при работе с текстом. (Подробнее)
▫️Улучшены Snapping-анимации. (Подробнее)
▫️Исправлена утечка памяти у LazyColumn из-за невызова метода onModifierLocalsUpdated. (Подробнее)
🔹Alpha/Beta🔹
🔸🔸Compose Animation/Foundation/Material/Runtime/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
2 943
#Article #Medium
Building A Jetpack Compose Window With AbstractComposeView
Бывают кейсы, когда нужно открыть Composable контент поверх Android View (при постепенной интеграции Compose в существующий проект), и для этого не подойдут Dialog или Popup. В таком случае автор статьи предлагает использовать кастомное решение, основанное на AbstractComposeView и называет его "Jetpack Compose Window".
2 943
#Article #Blog #Compose
Jetpack Compose Accompanist TwoPane
Интересная статья от разработчиков Microsoft, в которой они разбирают TwoPane — UI компонент из библиотеки Accompanist, предназначенный для разработки адаптивных интерфейсов под foldable устройства.
2 943
#Article #Blog #Compose
Measuring and drawing in Jetpack Compose
В дополнение к предыдущей статье об определении размеров дочерних элементов, в сегодняшнем материале автор разбирает как устроены измерение и отрисовка самого Composable компонента.
2 943
#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
2 943
#Article #Blog #Compose
Custom Layouts, measuring policies, and BoxWithConstraints in Jetpack Compose
Небольшая статья о том, как происходит определение размеров дочерних элементов при создании своего Layout-а в Compose, при чём тут MeasurePolicy, а также чем так необычен BoxWithConstraints. Обо всем этом — в сегодняшнем материале.
2 943
#Article #Blog #Performance
6 Jetpack Compose Guidelines to Optimize Your App Performance
Статья с большим количеством советов (разбитых на 6 правил) о том, как можно значительно улучшить производительность вашего приложения на Compose. Авторы затрагивают такие темы как стабильность классов (о которой был предыдущий пост), правильный вынос state-ов (State hoisting), и много чего ещё. Рекомендую к прочтению.
2 943
#Article #Medium #Performance #Recomposition
Optimizing Recomposition in Jetpack Compose: Stability System
Одной из ключевых особенностей Compose является Умная рекомпозиция (Smart recomposition), которая заключается в пропуске рекомпозиции для тех Composable функций, у которых значения входных параметров не изменились и являются стабильными.
В этом смысле, стабильность является достаточно важной концепцией, потому как именно она гарантирует, что Compose Runtime сможет безопасно считывать и сравнивать эти входные данные, чтобы, при необходимости, пропустить рекомпозицию.
Подробнее о том, что же всё-таки такое “стабильность” и “stability system” в Compose — в сегодняшней статье.
2 943
#Article #Medium #Performance
Comparing Jetpack Compose performance with XML
Статья с сравнением производительности Compose и XML-based экранов на основе таких показателей, как количество задержек отдельных кадров, а также скорость загрузки всей страницы. Материал особенно будет полезен для тех, кто собирается попробовать Jetpack Compose в production коде, но хотел бы для начала изучить результаты benchmark-ов.
2 943
#Article #Blog #Animation
Velocity Based Animation with Compose
Неплохая статья, в которой разбирается такая техника, как Velocity Based Animation (проще говоря “Анимация, основанная на скорости”), которая позоляет отслеживать скорость прокрутки списка и при помощи этого кастомизировать длительность применяемой анимации.
2 943
#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
2 943
#Article #Blog
movableContentOf and movableContentWithReceiverOf
Не так давно Jorge Castillo (автор книги Jetpack Compose Internals) создал блог “Effective Android”, в котором он публикует различные полезные материалы по Android разработке (естественно большая часть посвящена Compose).
В одной из таких статей разбираются функции movableContentOf и movableContentWithReceiverOf, которые позволяют нам сохранять состояние UI-контента и передавать его в последующие вызовы.
▫️P.S. В одном из предыдущих постов мы уже частично разбирали movableContentOf , может помочь для лучшего понимания
▫️P.S.S. В своем недавнем докладе я также уделял внимание этому механизму (ссылка с таймкодом)
2 943
#Article #Blog #UI
Drawing custom text spans in Compose UI
Автор статьи, ориентируясь на разнообразные подчеркивания текста в приложении BuzzKill, решил вручную реализовать их в Jetpack Compose. Результат - небольшая готовая библиотека ExtendedSpans. Об этапах реализации, а также достигнутых результатах — в сегодняшней статье.
2 943
#Article #Medium
Introducing Jetpack Compose’s New Layout: “LookaheadLayout”
Вместе с появлением новой альфа версии Jetpack Compose (1.3.0-alpha01) API фреймворка пополнился новым и уже горячо обсуждаемым layout-ом — LookaheadLayout. Если кратко, это первый layout в Compose, способный отслеживать кадры используемой анимации, при помощи чего, к примеру, легко можно реализовать анимацию типа “Shared Element Transition”. Подробнее о том, как работает этот компонент — в сегодняшней статье.
2 943
#Article #Medium
A better way to pass Data from Api to Composable
Автор статьи поднимает такую тему, как передача данных, полученных из API, в Composable функции, а также объясняет, почему это плохая практика, и предлагает свой подход к решению этого вопроса.
2 943
#Video #Youtube #JetpackCompose
Positional memoization, или Как работает одна из главных концепций Jetpack Compose
На YouTube канале Mobius начали публиковать первые записи докладов с прошедшей конференции, среди которых появился и мой, в котором я рассказываю о том, как устроена одна из ключевых концепций Jetpack Compose — позиционная мемоизация. Приятного просмотра!
