Forwarded from Мобильное Чтиво (Maxim Kachinkin)
This media is not supported in your browser
VIEW IN TELEGRAM
🇺🇸 Рисуем SVG в Compose Great Again
Сегодня расскажу, как можно нарисовать сложный рисунок в Compose, если у вас есть SVG файл. А именно как распарсить SVG файл в удобные для нас Path и отрисовать их “руками”.
🔍 Парсинг SVG: Мы загружаем SVG файл с помощью XmlPullParser, который читает каждый элемент. В каждом path элементе хранится информация о том, как рисовать фигуру — всё закодировано в атрибуте d. Этот атрибут содержит команды типа "M" (move to), "L" (line to), "C" (curve to) и координаты. Вместе они формируют контур, который и станет нашим рисунком.
🛠️ Конвертация Path: Здесь проблема. В Compose пока нет метода для декодирования пути напрямую из d атрибута SVG.
Но мы сделаем конвертацию Great Again! Мы сначала создаём старый добрый Path из androidx.core.graphics (через метод createPathFromPathData), а потом конвертируем его в Compose Path с помощью asComposePath. Немного костыльно, но работает.
Теперь, когда мы всё распарсили и конвертировали, можем просто отобразить это в Compose.
Я выложил пример на GitHub, где вы можете посмотреть, как это работает. В этом проекте пярмо то, что изображено на видосе, какая-то карта и какие-то непонятные области.
P.S. Да, нажатия сделаны не совсем идеально — попадание внутрь Path осуществляется по bounding box, а не точно по форме. Но это уже отдельная задача, а здесь у нас фокус на отрисовке! 😎
💬 А что интересного вы рисовали в Compose?
#compose #svg
Сегодня расскажу, как можно нарисовать сложный рисунок в Compose, если у вас есть SVG файл. А именно как распарсить SVG файл в удобные для нас Path и отрисовать их “руками”.
🔍 Парсинг SVG: Мы загружаем SVG файл с помощью XmlPullParser, который читает каждый элемент. В каждом path элементе хранится информация о том, как рисовать фигуру — всё закодировано в атрибуте d. Этот атрибут содержит команды типа "M" (move to), "L" (line to), "C" (curve to) и координаты. Вместе они формируют контур, который и станет нашим рисунком.
🛠️ Конвертация Path: Здесь проблема. В Compose пока нет метода для декодирования пути напрямую из d атрибута SVG.
Но мы сделаем конвертацию Great Again! Мы сначала создаём старый добрый Path из androidx.core.graphics (через метод createPathFromPathData), а потом конвертируем его в Compose Path с помощью asComposePath. Немного костыльно, но работает.
Теперь, когда мы всё распарсили и конвертировали, можем просто отобразить это в Compose.
Я выложил пример на GitHub, где вы можете посмотреть, как это работает. В этом проекте пярмо то, что изображено на видосе, какая-то карта и какие-то непонятные области.
P.S. Да, нажатия сделаны не совсем идеально — попадание внутрь Path осуществляется по bounding box, а не точно по форме. Но это уже отдельная задача, а здесь у нас фокус на отрисовке! 😎
💬 А что интересного вы рисовали в Compose?
#compose #svg
👍37🔥16❤1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел Haze 1.0 - Compose Multiplatform библиотека для блюра в UI. Нужна версия Compose 1.7.0
‼️ Если использовали предыдущие версии, то в 1.0 произошли изменения API
🐱 Исходники на GitHub
#compose #android #ios #desktop
#compose #android #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍7
💡 Preview Driven Development - новый подход к разработке Android-приложений
Концепция предлагает активно использовать превью-компоненты для тестирования и разработки интерфейсов и функций. Вот в чем суть:
👉 Jetpack Compose Previews позволяют не просто просматривать, но и тестировать функции на этапе разработки. Это упрощает процесс, снижает количество ошибок и дает визуальное представление всех состояний приложения.
👉 Мини-приложения для тестирования — каждый превью-компонент можно использовать как изолированное мини-приложение. Это значит, что тестировать отдельные элементы приложения можно без полной сборки и запуска.
👉 Автоматизация тестов — с помощью таких инструментов, как Emerge Snaphots, можно автоматизировать процесс проверки UI. Это делает разработку более стабильной и ускоряет релиз новых версий.
Для тех, кто хочет упрощать разработку и избегать неожиданных багов, Preview Driven Development — отличный инструмент! 💻✨
Исходники приложения доступны на🐱 GitHub
#android #androidstudio #compose #автотесты
Концепция предлагает активно использовать превью-компоненты для тестирования и разработки интерфейсов и функций. Вот в чем суть:
👉 Jetpack Compose Previews позволяют не просто просматривать, но и тестировать функции на этапе разработки. Это упрощает процесс, снижает количество ошибок и дает визуальное представление всех состояний приложения.
👉 Мини-приложения для тестирования — каждый превью-компонент можно использовать как изолированное мини-приложение. Это значит, что тестировать отдельные элементы приложения можно без полной сборки и запуска.
👉 Автоматизация тестов — с помощью таких инструментов, как Emerge Snaphots, можно автоматизировать процесс проверки UI. Это делает разработку более стабильной и ускоряет релиз новых версий.
Для тех, кто хочет упрощать разработку и избегать неожиданных багов, Preview Driven Development — отличный инструмент! 💻✨
Исходники приложения доступны на
#android #androidstudio #compose #автотесты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥5
Вышел Compose Multiplatform 1.7.1
🚀 Улучшения производительности
🛠 Исправлена бинарная совместимость на JVM
🛠 ИСправлены баги
⬆️ Обновились до Jetpack Compose 1.7.5 и других свежих библиотек
#compose #kmp #jvm
🚀 Улучшения производительности
🛠 Исправлена бинарная совместимость на JVM
🛠 ИСправлены баги
⬆️ Обновились до Jetpack Compose 1.7.5 и других свежих библиотек
#compose #kmp #jvm
🔥20
#пример #android #compose #material3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍8👏1
Set из Kotlin std lib является Immutable типом в Compose ?
Anonymous Poll
26%
Верно
55%
Неверно
15%
Не знаю
4%
Не участвую в опросе
Статья с реализацией анимирования лого Airbnb. Используется SVG логотип и происходит анимация по его точкам
#compose #android #анимация
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40🔥16
#compose #навигация #material3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20👏4
Composable Screens - приложение с демонстрацией сложных интерфейсов, реализованных на Compose UI.
#пример #compose
#пример #compose
🔥47👍1
Media is too big
VIEW IN TELEGRAM
Добились этого благодаря использованию специальной JVM с поддержкой переопределения классов, доступной в JetBrains Runtime.
В
Пока всё в экспериментальном режиме, но результаты радуют ❤️. Когда же уже Compose MP превью в IDE будет работать из коробки
#compose #desktop #jvm #idea #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥15
Порой вместо передачи значения в Composable функцию лучше делать это через лямбду, так как это не приведет к рекомпозицям. Лучший пример - Modifier.offset. В статье как раз демонстрируется какой эффект оказывает описанный подход
#compose #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50