Compose Broadcast – Telegram
Compose Broadcast
5.82K subscribers
342 photos
89 videos
559 links
Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast
Download Telegram
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
🔥49👍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
⚙️ Готовится к релизу Compose 1.8.0 - вышла Beta 2

BOM файл - androidx.compose:compose-bom-beta:2025.02.00

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👌21
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Инструкция(EN,2м) по реализации анимации прогресса двигающихся точек на Compose

🔗 Ссылка без VPN

#compose #анимация
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍6👌2
This media is not supported in your browser
VIEW IN TELEGRAM
Статья(EN,8м) с реализацией подобного UI на. Compose

🔗 Ссылка без VPN

#compose
👍17
Инструкция(EN,5м) по созданию металлической кнопки на Compose

#compose
👍32🔥31
Carbon Compose Multiplatform (CMP) - опенсорс реализация дизайн системы IBM на CMP с поддержкой Android, Dekstop, iOS, Web WASM

#compose #uikit #android #ios #desktop #wasm
👍27🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Исходный код реализации такого виджета на Compose смотрите на 🐱 GitHub

#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍3
⚙️ Почему я не использую *Screen и выбираю Pane подход

Когда речь заходит о создании UI на Jetpack Compose с поддержкой смартфонов, планшетов и десктопов, важно не привязываться к физическим размерам экрана.

Чего я избегаю?
Я не использую именование Composable-экранов через *Screen, например:
// !!! не делайте так для экрана фичи
@Composable
fun HomeScreen() { /* UI */ }


Такой подход жестко связывает UI с понятием "экрана устройства", а это не всегда корректно, особенно в мире foldable-устройств и десктопов. UI каждой фичи должен уметь работать на всём пространстве что ему выделит контейнер, где будет показ UI фичи.

Что я использую вместо этого?
Я применяю концепцию Pane – это независимые контейнеры UI, которые адаптируются под выделенное для них место и не должны понимать ничего о размерах экрана, ориентации, расположении. Контейнер, где встраивается UI, сам определит всё и настроит UI через Modifier.
@Composable
fun HomePane(modifier: Modifier = Modifier) {
Column(modifier = modifier.fillMaxSize()) {
Text("Welcome to Home")
// Остальной UI
}
}


Такой подход позволяет:
✔️ Легко компоновать UI для разных конфигураций (например, показывать две панели на планшете и одну на телефоне).
✔️ Избежать привязки к Screen, что делает код гибче.
✔️ Улучшить переиспользуемость UI-компонентов.

📌 Как применять Pane в адаптивном UI?

Простейший пример, где на планшетах и десктопе мы показываем две панели, а на телефонах – только одну:
// Рутовая Composable функция приложения, которая понимает про текущее состояние приложения 
// на экране и в зависимости от этого располагает контент
@Composable
fun RootScreen(windowSizeClass: WindowSizeClass) {
if (windowSizeClass.widthSizeClass == WindowWidthSizeClass.Expanded) {
// Большой экран
Row(Modifier.fillMaxSize()) {
HomePane(Modifier.weight(1f))
DetailsPane(Modifier.weight(1f))
}
} else {
// Маленький или средний
HomePane()
}
}


❗️ Также важной частью работы с Pane является передача в неё Modifier параметра, через который контейнер панели будет настраивать размещение и другие параметры Pane.

Пост - это мой взгляд и рекомендация. В архитектуре и рекомендациях нет абсолютного правильного или неправильного подхода. Выбирать как делать - остаётся на вашей стороне.

#compose #android #adaptive #material #советы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍77🔥61