Compose Broadcast
5.41K subscribers
306 photos
83 videos
508 links
Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast
Download Telegram
⚙️ Вышел Jetpack Compose 1.7.7 c исправление багов

Подробности изменений
👉 Animation
👉 Foundation
👉 Material
👉 Runtime
👉 UI

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19
⚙️ Вышла первая beta Jetpack Compose 1.8.0

Подробности изменений тут
👉 Animation
👉 Foundation
👉 Material
👉 Runtime
👉 UI

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
⚙️ Одна из полезных оптимизаций для работы Compose - использование аннотации @NonRestartableComposable, которая сообщает Compose: «Не перезапускать эту функцию, даже если родительский компонент обновился».

Когда использовать?
Функция является обёрткой над другой Composable функцией
Если метод не зависит от состояния и всегда ведёт себя одинаково.
Когда нужно оптимизировать производительность и уменьшить лишние перестроения.
В случаях, когда внутри создаётся сложный объект, который не должен пересоздаваться

// Пример функции из Jetpack Material 3
@NonRestartableComposable
@Composable
fun Icon(
painter: Painter,
contentDescription: String?,
modifier: Modifier = Modifier,
tint: Color = LocalContentColor.current,
contentScale: ContentScale = ContentScale.Fit
) {
Image(painter = painter, contentDescription = contentDescription, modifier = modifier, colorFilter = tint.asColorFilter())
}


Аннотацию надо использовать разумно и не стоит использовать, если…

Функция зависит от состояния (включая CompositonLocal)
// НЕ НАДО @NonRestartableComposable
@Composable
fun Timer() {
var time by remember { mutableStateOf(0) }

LaunchedEffect(Unit) {
while (true) {
delay(1000)
time++
}
}

Text("Time: $time")
}


‼️ Будьте внимательны и убирайте/добавляйте аннотацию, если код Composable функции меняется

#composable #оптимизации
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🔥1👏1
Media is too big
VIEW IN TELEGRAM
📹 Testing | Jetpack Compose Tips (EN, 5 мин)

Compose превью помогают быстро проверять компоненты во время разработки, а с помощью Gradle-плагина для тестирования скриншотов превью можно автоматизировать визуальные регрессионные тесты. Для тестирования поведения теперь доступен новый API – DeviceConfigurationOverride, который позволяет эмулировать различные конфигурации устройств без необходимости запускать несколько эмуляторов для полного набора тестов.

#compose #androidstudio #инструменты #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
Статья(EN,4м) с обзором как нарисовать вот такой график сна на Compose

🔗 Ссылка без VPN

#compose
2👍28🔥61
Пример миграции в Compose с Modifier.pullToRefresh на PullToRefreshBox из Material3

#compose #android
👍22🔥1
Media is too big
VIEW IN TELEGRAM
Decomposer - приложения для десктопа, чтоб изучать внутренности Jetpack Compose. Позволяет
👉 Смотреть IR структуру вашего приложения
👉 Смотреть структуру композиции вашего приложения

Подробности использования в статье(EN,11м) и ссылка без VPN

#compose #инструменты
🔥33👍2
Why Not Compose! - репозиторий-сборник с примерами реализаций анимаций, композици и UI на Jetpack Compose

#android #compose #анимация
👍22
📹 Decompose шаг за шагом. Часть 1 (1.5ч)

Обзор основных компонентов библиотеки Decompose, демонстрация на примере простого приложения как можно использовать разные её компоненты и возможности.

📹 Также можно посмотреть на VK Video

#compose #kmp #decompose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33👍3
Decompose от Аркадия Иванова (его блог @arkivanov_logs) - однозначно, это классное решение, но оно не про навигацию, а фреймворк по разработки приложений на компонентном подходе на основе KMP

Сам автор это и пишет в первой строке описания:
Decompose is a Kotlin Multiplatform library for breaking down your code into tree-structured lifecycle-aware business logic components (aka BLoC), with routing functionality and pluggable UI


Сравнивать его с Jetpack Navigation и другими навигационными библиотеками не будет корректно, так как решение Google только про навигацию! Если у вас уже есть готовое приложения, то для интеграции Decompose вам скорее всего придется внести изменения, а вот интегрировать библиотеку только для навигации будет скорее всего проще
12🔥3👌2
⚙️ Как сделать маски произвольной формы на Compose (EN, 3м)

Для решения задачи берется PNG маски, Modifier.drawWithContent() и BlendMode

🔗 Ссылка без VPN

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍8
Kelp - плагин для Android Studio, который улучшает интеграцию собственной дизайн системы на Jetpack Compose.

Что умеет плагин:
👉 Задать иконки для Composable функции в автокомплите
👉 Превью иконок в автодополнении
👉 Превью цветов из дизайн систем
👉 Генерация превью Composable функций в KDOC
👉 Создание live templates

Вся настройка происходит через сохранение json файла, а также есть Gradle плагин

#compose #androidstudio
38🔥10👍4🎉1
Media is too big
VIEW IN TELEGRAM
Пример реализации mesh градиентов в Compose. Код найдете в статье(EN,5м)

#compose
🔥48👍9
⚙️ Вышел Jetpack Compose 1.7.8 c исправилением креш в BasicTextField

Новый compose BOM - 2025.02.00

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👏12🏆3