#Article #Blog #UI
Drawing custom text spans in Compose UI
Автор статьи, ориентируясь на разнообразные подчеркивания текста в приложении BuzzKill, решил вручную реализовать их в Jetpack Compose. Результат - небольшая готовая библиотека ExtendedSpans. Об этапах реализации, а также достигнутых результатах — в сегодняшней статье.
Drawing custom text spans in Compose UI
Автор статьи, ориентируясь на разнообразные подчеркивания текста в приложении BuzzKill, решил вручную реализовать их в Jetpack Compose. Результат - небольшая готовая библиотека ExtendedSpans. Об этапах реализации, а также достигнутых результатах — в сегодняшней статье.
Saket Narayan
Drawing custom text spans in Compose UI
Exploring how squiggly underlines and rounded corners can be drawn without any official APIs for drawing custom spans.
👍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. В своем недавнем докладе я также уделял внимание этому механизму (ссылка с таймкодом)
movableContentOf and movableContentWithReceiverOf
Не так давно Jorge Castillo (автор книги Jetpack Compose Internals) создал блог “Effective Android”, в котором он публикует различные полезные материалы по Android разработке (естественно большая часть посвящена Compose).
В одной из таких статей разбираются функции movableContentOf и movableContentWithReceiverOf, которые позволяют нам сохранять состояние UI-контента и передавать его в последующие вызовы.
▫️P.S. В одном из предыдущих постов мы уже частично разбирали movableContentOf , может помочь для лучшего понимания
▫️P.S.S. В своем недавнем докладе я также уделял внимание этому механизму (ссылка с таймкодом)
Effective Android
movableContentOf and movableContentWithReceiverOf
Tracking compositions in Jetpack Compose
👍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.tg-me.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.tg-me.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
Compose Release Digest (29.06 — 04.08)
Традиционный дайджест (в обновленном формате) по основным изменениям последних релизов библиотек фреймворка, среди которых:
🔹RC/Stable🔹
🔸🔸Compose Compiler (1.2.0)
▫️ Добавлена поддержка версий Kotlin 1.7.0
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.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.tg-me.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🔥3❤1
#Article #Blog #Animation
Velocity Based Animation with Compose
Неплохая статья, в которой разбирается такая техника, как Velocity Based Animation (проще говоря “Анимация, основанная на скорости”), которая позоляет отслеживать скорость прокрутки списка и при помощи этого кастомизировать длительность применяемой анимации.
Velocity Based Animation with Compose
Неплохая статья, в которой разбирается такая техника, как Velocity Based Animation (проще говоря “Анимация, основанная на скорости”), которая позоляет отслеживать скорость прокрутки списка и при помощи этого кастомизировать длительность применяемой анимации.
DEV Community
Velocity Based Animation with Compose
Do you have a keen eye for fine details when it comes to UX? Do you try to go that extra step when...
👍5❤1
#Article #Medium #Performance
Comparing Jetpack Compose performance with XML
Статья с сравнением производительности Compose и XML-based экранов на основе таких показателей, как количество задержек отдельных кадров, а также скорость загрузки всей страницы. Материал особенно будет полезен для тех, кто собирается попробовать Jetpack Compose в production коде, но хотел бы для начала изучить результаты benchmark-ов.
Comparing Jetpack Compose performance with XML
Статья с сравнением производительности Compose и XML-based экранов на основе таких показателей, как количество задержек отдельных кадров, а также скорость загрузки всей страницы. Материал особенно будет полезен для тех, кто собирается попробовать Jetpack Compose в production коде, но хотел бы для начала изучить результаты benchmark-ов.
Medium
Comparing Jetpack Compose performance with XML
As Jetpack compose is progressing towards stability, our team decided to measure the performance differences between Compose and XML-based…
❤7👍4🔥1
#Article #Medium #Performance #Recomposition
Optimizing Recomposition in Jetpack Compose: Stability System
Одной из ключевых особенностей Compose является Умная рекомпозиция (Smart recomposition), которая заключается в пропуске рекомпозиции для тех Composable функций, у которых значения входных параметров не изменились и являются стабильными.
В этом смысле, стабильность является достаточно важной концепцией, потому как именно она гарантирует, что Compose Runtime сможет безопасно считывать и сравнивать эти входные данные, чтобы, при необходимости, пропустить рекомпозицию.
Подробнее о том, что же всё-таки такое “стабильность” и “stability system” в Compose — в сегодняшней статье.
Optimizing Recomposition in Jetpack Compose: Stability System
Одной из ключевых особенностей Compose является Умная рекомпозиция (Smart recomposition), которая заключается в пропуске рекомпозиции для тех Composable функций, у которых значения входных параметров не изменились и являются стабильными.
В этом смысле, стабильность является достаточно важной концепцией, потому как именно она гарантирует, что Compose Runtime сможет безопасно считывать и сравнивать эти входные данные, чтобы, при необходимости, пропустить рекомпозицию.
Подробнее о том, что же всё-таки такое “стабильность” и “stability system” в Compose — в сегодняшней статье.
👍5❤1
#Article #Blog #Performance
6 Jetpack Compose Guidelines to Optimize Your App Performance
Статья с большим количеством советов (разбитых на 6 правил) о том, как можно значительно улучшить производительность вашего приложения на Compose. Авторы затрагивают такие темы как стабильность классов (о которой был предыдущий пост), правильный вынос state-ов (State hoisting), и много чего ещё. Рекомендую к прочтению.
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. Обо всем этом — в сегодняшнем материале.
Custom Layouts, measuring policies, and BoxWithConstraints in Jetpack Compose
Небольшая статья о том, как происходит определение размеров дочерних элементов при создании своего Layout-а в Compose, при чём тут MeasurePolicy, а также чем так необычен BoxWithConstraints. Обо всем этом — в сегодняшнем материале.
Effective Android
Custom Layouts, measuring policies, and BoxWithConstraints in Jetpack Compose
Measuring children according to incoming parent constraints, deferring initial composition.
❤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.tg-me.com/UI (1.2.1)
▫️ Несколько минорных изменений по сравнению с 1.2.0
🔹Alpha/Beta🔹
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.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
Compose Release Digest (05.08 — 12.09)
После небольшого перерыва возвращаемся с традиционным дайджестом по основным изменениям последних релизов библиотек фреймворка, среди которых:
🔹RC/Stable🔹
🔸🔸Compose Compiler (1.3.0 — 1.3.1)
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.2.1)
▫️ Несколько минорных изменений по сравнению с 1.2.0
🔹Alpha/Beta🔹
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.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👍2❤1
#Article #Blog #Compose
Measuring and drawing in Jetpack Compose
В дополнение к предыдущей статье об определении размеров дочерних элементов, в сегодняшнем материале автор разбирает как устроены измерение и отрисовка самого Composable компонента.
Measuring and drawing in Jetpack Compose
В дополнение к предыдущей статье об определении размеров дочерних элементов, в сегодняшнем материале автор разбирает как устроены измерение и отрисовка самого Composable компонента.
Effective Android
Measuring and drawing in Jetpack Compose 📏👩🎨
When, how, and in what order measuring and drawing is done
❤1👍1
#Article #Blog #Compose
Jetpack Compose Accompanist TwoPane
Интересная статья от разработчиков Microsoft, в которой они разбирают TwoPane — UI компонент из библиотеки Accompanist, предназначенный для разработки адаптивных интерфейсов под foldable устройства.
Jetpack Compose Accompanist TwoPane
Интересная статья от разработчиков Microsoft, в которой они разбирают TwoPane — UI компонент из библиотеки Accompanist, предназначенный для разработки адаптивных интерфейсов под foldable устройства.
Microsoft News
Jetpack Compose Accompanist TwoPane
Hello Compose developers! This week, we’d like to talk about the TwoPane layout from Google’s Accompanist Adaptive library! Not to be confused with our own Microsoft Compose SDK TwoPaneLayout component, TwoPane from Accompanist is a fold-aware UI component…
🔥3❤1👍1
#Article #Medium
Building A Jetpack Compose Window With AbstractComposeView
Бывают кейсы, когда нужно открыть Composable контент поверх Android View (при постепенной интеграции Compose в существующий проект), и для этого не подойдут Dialog или Popup. В таком случае автор статьи предлагает использовать кастомное решение, основанное на AbstractComposeView и называет его "Jetpack Compose Window".
Building A Jetpack Compose Window With AbstractComposeView
Бывают кейсы, когда нужно открыть Composable контент поверх Android View (при постепенной интеграции Compose в существующий проект), и для этого не подойдут Dialog или Popup. В таком случае автор статьи предлагает использовать кастомное решение, основанное на AbstractComposeView и называет его "Jetpack Compose Window".
Medium
Building A Jetpack Compose Window With AbstractComposeView
Beyond normal Jetpack Compose Development, e.g. building Tooltip, Coachmark, Custom Toast, etc.
🔥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.tg-me.com/UI (1.3.0-rc01)
▫️Добавлен новый API Hyphens для поддержки автоматических переносов при работе с текстом. (Подробнее)
▫️Улучшены Snapping-анимации. (Подробнее)
▫️Исправлена утечка памяти у LazyColumn из-за невызова метода onModifierLocalsUpdated. (Подробнее)
🔹Alpha/Beta🔹
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.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
Compose Release Digest (13.09 — 12.10)
Традиционный дайджест по основным изменениям последних релизов библиотек фреймворка, среди которых:
🔹RC/Stable🔹
🔸🔸Compose Compiler (1.3.2)
▫️Добавлена поддержка версий Kotlin 1.7.20
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.3.0-rc01)
▫️Добавлен новый API Hyphens для поддержки автоматических переносов при работе с текстом. (Подробнее)
▫️Улучшены Snapping-анимации. (Подробнее)
▫️Исправлена утечка памяти у LazyColumn из-за невызова метода onModifierLocalsUpdated. (Подробнее)
🔹Alpha/Beta🔹
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.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🔥2❤1
#Article #Medium
How To Handle ViewModel One-Time Events In Jetpack Compose
Автор статьи разбирает такую тему, как обработка one-time событий в приложении с Compose, а также сравнивает классический подход с использованием библиотеки Compose-State-Events.
P.S. Для тех, кому неудобно читать в текстовом варианте, добавил также видеоверсию материала.
How To Handle ViewModel One-Time Events In Jetpack Compose
Автор статьи разбирает такую тему, как обработка one-time событий в приложении с Compose, а также сравнивает классический подход с использованием библиотеки Compose-State-Events.
P.S. Для тех, кому неудобно читать в текстовом варианте, добавил также видеоверсию материала.
Medium
How To Handle ViewModel One-Time Events In Jetpack Compose
About a new way to implement one-time events in Jetpack Compose using the Compose State Events Library
❤3👍1🔥1
#Featured #AndroidDevSummit #Video #Compose
Reimagining designer-developer handoff: Introducing Relay
Одним из самых ярких анонсов Google с прошедшего Android Dev Summit однозначно стал Relay — новый UI инструмент для перевода моделей дизайна из Figma в код Jetpack Compose, а также их дальнейшей синхронизации. Подробнее о том, как работает новинка — в небольшом видеодокладе с конференции.
A также:
🔸Страница Relay на developer.android.com
🔸Страница Relay на material.io
Reimagining designer-developer handoff: Introducing Relay
Одним из самых ярких анонсов Google с прошедшего Android Dev Summit однозначно стал Relay — новый UI инструмент для перевода моделей дизайна из Figma в код Jetpack Compose, а также их дальнейшей синхронизации. Подробнее о том, как работает новинка — в небольшом видеодокладе с конференции.
A также:
🔸Страница Relay на developer.android.com
🔸Страница Relay на material.io
YouTube
Reimagining designer-developer handoff: Introducing Relay
In this lightning talk, we’ll introduce you to Relay, available now in open alpha. Relay is a new process that allows teams to create UI in Figma and generate high-fidelity Compose UI components. Relay puts structured component data at the center of the collaboration…
👍4❤1👏1
#Featured #AndroidDevSummit #Video #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.
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.
YouTube
Reimagining designer-developer handoff: Introducing Relay
In this lightning talk, we’ll introduce you to Relay, available now in open alpha. Relay is a new process that allows teams to create UI in Figma and generate high-fidelity Compose UI components. Relay puts structured component data at the center of the collaboration…
🔥9👍4
#Featured #AndroidDevSummit #Video #Compose
Compose Modifiers deep dive
Доклад от небезызвестного Leland Richardson, в котором он предлагает глубже погрузиться в историю модификаторов Compose, а также связанных с ними проблем и ограничений. Ну и самое интересное, рассказывает об изменениях Modifier API — как о тех, на которые уже переехали в версии 1.3, так и о тех, которые добавят в 1.4.
Compose Modifiers deep dive
Доклад от небезызвестного Leland Richardson, в котором он предлагает глубже погрузиться в историю модификаторов Compose, а также связанных с ними проблем и ограничений. Ну и самое интересное, рассказывает об изменениях Modifier API — как о тех, на которые уже переехали в версии 1.3, так и о тех, которые добавят в 1.4.
YouTube
Compose Modifiers deep dive
A deep dive into the history of Modifiers and the constraints of APIs. As well as the problems they are meant to solve leading up to a major overhaul in implementation in 1.3 and the addition of several lower level, but powerful, experimental APIs that we…
👍3🔥1
А ещё, совсем недавно мы преодолели очень важную цифру — 1000 человек на канале 🔥
Практически за два года мы выросли с нуля до самого большого ресурса в Telegram, полностью посвященного Compose. И это, безусловно, наша общая победа.
Спасибо за поддержку, будем держать планку и развиваться дальше!
Практически за два года мы выросли с нуля до самого большого ресурса в Telegram, полностью посвященного Compose. И это, безусловно, наша общая победа.
Спасибо за поддержку, будем держать планку и развиваться дальше!
🔥25👍4🎉2👎1
#Release #Compose #Changelog
Compose Release Digest (13.10 — 12.11)
Традиционный дайджест по основным изменениям последних релизов библиотек фреймворка, среди которых:
🔹RC/Stable🔹
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.3.0 — 1.3.1)
▫️Добавлены экспериментальные функции LazyVerticalStaggeredGrid и LazyHorizontalStaggeredGrid.
▫️Исправлены проблемы производительности BeyondBoundsLayout. (Подробнее)
▫️Добавлен компонент Pull-To-Refresh. (Подробнее)
▫️Максимально поддерживаемое значение elevation для диалогов и popup-ов уменьшено до 8dp.
▫️Добавлено новое экспериментальное API — Modifier.Node (как более производительная альтернатива Modifier.composed).
🔹Alpha/Beta🔹
🔸🔸Compose Compiler (1.4.0-alpha01)
▫️Исправлена работа компилятора с K/JS версии 1.7.20
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.4.0-alpha01 — 1.4.0-alpha02)
▫️Добавлены WindowInsets.imeAnimationSource и WindowInsets.imeAnimationTarget для определения прогресса анимации и работы с IME. (Подробнее)
▫️В компоненты BasicText/BasicTextField/Text/TextField/OutlinedTextField добавлен параметр minLines для контроля их минимальной высоты на основе количества строк. (Подробнее тут и тут)
▫️Метод forEachGesture() теперь deprecated в пользу awaitEachGesture(). (Подробнее)
▫️SnapshotStateList и SnapshotStateMap теперь имеют явные реализации в виде методов toList() и toMap(). (Подробнее)
▫️Для TextStyle/SpanStyle/Paragraph/MultiParagraph добавлен экспериментальный атрибут DrawStyle для дополнительной настройки текста . (Подробнее)
▫️В Modifier.Node добавлен метод invalidateSubtree() для возможности удаления целых иерархий для отрисовки (Подробнее).
Также были обновлены и различные дополнения Compose, а именно:
▫️Paging-Compose обновлен до версии 1.0.0-alpha17
▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версии 1.1.0-rc01
▫️Compose Material 3 (Material You) обновлен до версий 1.0.1 и 1.1.0-alpha02
Compose Release Digest (13.10 — 12.11)
Традиционный дайджест по основным изменениям последних релизов библиотек фреймворка, среди которых:
🔹RC/Stable🔹
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.3.0 — 1.3.1)
▫️Добавлены экспериментальные функции LazyVerticalStaggeredGrid и LazyHorizontalStaggeredGrid.
▫️Исправлены проблемы производительности BeyondBoundsLayout. (Подробнее)
▫️Добавлен компонент Pull-To-Refresh. (Подробнее)
▫️Максимально поддерживаемое значение elevation для диалогов и popup-ов уменьшено до 8dp.
▫️Добавлено новое экспериментальное API — Modifier.Node (как более производительная альтернатива Modifier.composed).
🔹Alpha/Beta🔹
🔸🔸Compose Compiler (1.4.0-alpha01)
▫️Исправлена работа компилятора с K/JS версии 1.7.20
🔸🔸Compose Animation/Foundation/Material/Runwww.tg-me.com/UI (1.4.0-alpha01 — 1.4.0-alpha02)
▫️Добавлены WindowInsets.imeAnimationSource и WindowInsets.imeAnimationTarget для определения прогресса анимации и работы с IME. (Подробнее)
▫️В компоненты BasicText/BasicTextField/Text/TextField/OutlinedTextField добавлен параметр minLines для контроля их минимальной высоты на основе количества строк. (Подробнее тут и тут)
▫️Метод forEachGesture() теперь deprecated в пользу awaitEachGesture(). (Подробнее)
▫️SnapshotStateList и SnapshotStateMap теперь имеют явные реализации в виде методов toList() и toMap(). (Подробнее)
▫️Для TextStyle/SpanStyle/Paragraph/MultiParagraph добавлен экспериментальный атрибут DrawStyle для дополнительной настройки текста . (Подробнее)
▫️В Modifier.Node добавлен метод invalidateSubtree() для возможности удаления целых иерархий для отрисовки (Подробнее).
Также были обновлены и различные дополнения Compose, а именно:
▫️Paging-Compose обновлен до версии 1.0.0-alpha17
▫️Compose для Wear, а также дополнения compose-material и compose-navigation для него обновлены до версии 1.1.0-rc01
▫️Compose Material 3 (Material You) обновлен до версий 1.0.1 и 1.1.0-alpha02
👍8🔥1
#Article #Medium #Animation
Making Jellyfish move in Compose: Animating ImageVectors and applying AGSL RenderEffects
Любопытная статья, в которой автор показывает как можно создать нетривиальную анимацию медузы (!!!), по пути охватывая такие темы как:
▫️Создание кастомных ImageVectors из SVG
▫️Частичная анимация ImageVector
▫️Применение эффекта шума к Composable при помощи AGSL RenderEffect
Making Jellyfish move in Compose: Animating ImageVectors and applying AGSL RenderEffects
Любопытная статья, в которой автор показывает как можно создать нетривиальную анимацию медузы (!!!), по пути охватывая такие темы как:
▫️Создание кастомных ImageVectors из SVG
▫️Частичная анимация ImageVector
▫️Применение эффекта шума к Composable при помощи AGSL RenderEffect
Medium
Making Jellyfish move in Compose: Animating ImageVectors and applying AGSL RenderEffects 🐠
Learn how to use ImageVectors in Compose
🥰5👍4❤1