Compose Broadcast
5.77K subscribers
336 photos
88 videos
547 links
Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
В Jetpack Compose 1.8.0 появилась возможность автоматического изменения размера текста чтобы вписаться в заданные размеры

#compose #android
👍135
Compose Broadcast
В Jetpack Compose 1.8.0 появилась возможность автоматического изменения размера текста чтобы вписаться в заданные размеры #compose #android
Пример настройки autoresize текста:
Box {
BasicText(
text = "Hello World",
maxLines = 1,
autoSize = TextAutoSize.StepBased(
minFontSize = TextAutoSizeDefaults.MinFontSize,
maxFontSize = TextAutoSizeDefaults.MaxFontSize,
stepSize = 0.25.sp
)
)
}


#compose #android
👍49
This media is not supported in your browser
VIEW IN TELEGRAM
compose-table - Compose Multiplatform библиотека с поддержкой Android, iOS, JVM Desktop, WASM для показа таблиц

Можно попробовать онлайн версию

#compose #android #ios #jvm #desktop #wasm
👍411
⚙️ Compose Unstyled - набор основных компонентов для построения дизайн систем для Compose Multiplatform с поддержкой Desktop, Android, iOS, JS, WASM

Плюсы решения
👉 Компоненты без стилизации
👉 Поддержка доступности и навигации клавиатурой
👉 Простое API
👉 Одинаковое поведение на всех платформах
👉 Хорошая документация
👉 Все компоненты поддерживают все KMP таргеты Compose

#compose #kmp #composemp #android #ios #desktop #wasm #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍462
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 WikWok - красивое и удобное приложения, которое из статей Wikipedia делает просмотр в стиле TikTok.

Приложения с KMP и Compose Multiplatform для Android, iOS, Desktop, Web. Стек: Kotlin Inject, KStore, KotlinX библиотеки, Ktor, Coil, KMP Settings, Compose Desktop JVM Hot Reload

Автор - Константин Цховребов из JB команды KMP.

Скачать можно в Google Play, а вот в App Store не выкладывали.

#compose #kmp #kotlin #пример #android #desktop #ios #web #wasm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34
⚙️ Вышел Jetpack Compose 1.8.2 с исправлениями багов. Обновляйте Compose BOM до самой свежей версии
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.05.01"))
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
⚙️ Material 3 Expressive уже доступен в Compose

В androidx.compose.material3:material3:1.4.0-alpha10 есть множество новых компонентов следующий дизайн системы Google. Помимо компонентов также доступна новая системная физика для движений компонентов

@Composable
fun AndroidifyTheme(
content: @Composable () -> Unit,
) {
val colorScheme = LightColorScheme


MaterialExpressiveTheme(
colorScheme = colorScheme,
typography = Typography,
shapes = shapes,
motionScheme = MotionScheme.expressive(), // задание схемы движений
content = {
SharedTransitionLayout {
CompositionLocalProvider(LocalSharedTransitionScope provides this) {
content()
}
}
},
)
}


Больше примеров найдете в статье, а также можно посмотреть в исходниках нового приложения примера Androidify

#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤯6🤔3
🐱 OpenAnimationApp - демо приложение с демонстрацией работы разных Lottie анимаций на Android, iOS, Desktop/JVM и Web с использованием Kotlin Multiplatform. Демо сделано на основе Compottie - Compose Multiplatform обертки Lottie

#compose #анимация #android #desktop #ios #wasm #js #web
Please open Telegram to view this post
VIEW IN TELEGRAM
31👍10🔥4
⚙️ Первая Beta Jetpack Compose 1.9.0 уже вышла

Самый простой способ попробовать новую версию - использовать BOM в Gradle
dependencies {
implementation(platform("androidx.compose:compose-bom-beta:2025.06.01")
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
⚙️ Compose 1.8.3 с исправлением багов в UI артефакте

Самый простой способ попробовать новую версию - использовать BOM в Gradle
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.06.01")
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
⚙️ Вышла вторая Beta Jetpack Compose 1.9.0

В новой сборке исправили баги, а также добавили поддержку smart элементов в контекстных меню

Самый простой способ попробовать новую версию - использовать BOM в Gradle
dependencies {
implementation(platform("androidx.compose:compose-bom-beta:2025.06.02")
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5
This media is not supported in your browser
VIEW IN TELEGRAM
LazyTimetable - open source Jetpack Compose библиотека для реализация lazy расписания мероприятия или в школе/универе. Работает только на Android

#compose #android #opensource
👍17🤔133🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ История (20м) как в Dodo переписали компонент слайдера на Compose. До этого он был на MotionLayout.

Причина - куча багов, которые не получалось решить, а также на Compose писать проще.

По итогу реализовали свой Layout, чтобы сделать иерархию плоской и было меньше рекомпозиций.
@Composable  
fun FastPaymentButton(
fastPaymentState: FastPaymentState,
modifier: Modifier = Modifier,
thumbContent: @Composable BoxScope.() -> Unit = {},
background: @Composable () -> Unit = DefaultFastPaymentButtonBackground,
// Параметры будут добавляться по мере обогащения слайдера фичами
onClick: () -> Unit = {},
onSwiped: () -> Unit = {},
) {
// Content
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍11
⚙️ Вышел Jetpack Compose 1.9.0 Stable

Вышла следующая стабильная версия UI фреймворка для Android. Что нового:

👉 Появилась модификаторы для работы с тенями Modifier.dropShadow() и Modifier.innerShadow(). Уже существующий Modifier.shadow() рисует тень за объектом, а новые модификаторы добавят тень внутри.

👉 Более производительный способ отслеживать положения элементов на экране с помощью Modifier.onLayoutRectChanged()

👉 Добавили поддержку скролла в двух направлениях сразу (например как скролл карты или фото). Используйте Draggable2D и Scrollable2D API

👉 Улучшили работу скролла скролл при использованием VIew с Compose

👉 Добавили опцию для включения большего количества информации при анализе крешей в Compose
class App : Application() {
override fun onCreate() {
Composer.setDiagnosticStackTraceEnabled(BuildConfig.DEBUG)
}
}


👉 Аннотации @Stable, @Immutable и @StableMarker выделили в отдельный артефакт runtime-annotation, чтобы можно было использовать их в модулях без Compose

👉 Новые аннотации @RememberInComposition и @FrequentlyChangingValue (подробнее в отдельном посте)

Много улучшений в LazyLayout
👉 Стабилизация API для создания собственных Lazy компонентов
👉 Значительное ускорение производительности скролла Lazy List и Lazy Grid благодаря механизму предзагрузки (prefetch). Надо использовать LazyLayoutCacheWindow
@Composable
private fun LazyColumnCacheWindowDemo() {
val dpCacheWindow = LazyLayoutCacheWindow(ahead = 150.dp, behind = 100.dp)
val state = rememberLazyListState(cacheWindow = dpCacheWindow)
LazyColumn(state = state) {
items(count) { Text(text = "$it", fontSize = 80.sp) }
}
}


Конечно же новая версия Compose - это повышение скорости работы и исправление багов для более плавного UI

Обновляем BOM файл в зависимостях вашего проекта для получения свежей версии:
// build.gradle.kts
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.08.00"))
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥576👍4
⚙️ XCalendar - Google Calendar, переписанный на Compose Multiplatform для Android и iOS. Есть все основные фичи, но самое интересное - как сделали виджеты для отображения календаря.

#kotlin #compose #android #ios #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥11
⚙️ Стектрейсы Jetpack Compose в релизных сборка теперь станут понятными!

С выходом Kotlin 2.3.0 (на момент написания поста вышла Beta 2) компилятор Compose начал генерировать mapping файлы для стектрейсов Composable функций — теперь даже если ваше приложение минифицировано R8, вы сможете понять, где именно упала композиция.

Раньше подробные стектрейсы были доступны только в debuggable сборках из-за того что информация не затиралась. Теперь же появился новый режим — Group Keys, который позволяет связать анонимные функции из минифицированного кода с исходными @Composable без необходимости хранить пути к файлам.

Чтобы включить этот режим, добавьте строку до инициализации любого контента Compose (лучше всего в рутовой функции):
Composer.setDiagnosticStackTraceMode(ComposeStackTraceMode.GroupKeys)


После этого при падениях во время composition / measure / draw Compose сам добавит свой стектрейс — даже в релизных сборках 🔥

Для работы требуется:
⚙️ Compose Runtime 1.10+
🤖 R8 включен (ProGuard не подходит)
🏝 Kotlin 2.3.0+

Если же увидите новые предупреждения или недостаток информации — Google просит репортить их в Issue Tracker.

#compose #kotlin #android #r8
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍32
🐱 Heron - open source клиент для соц сети Bluesky. Приложения на Jetpack Compose Multiplatform для Android, iOS и Desktop

Тех стек:
👉 Многомодульная архитектура
👉 Metro DI
👉 Coil для показа картинок
👉 Kotlin Coroutines и SerlializationX
👉 Ktor
👉 Jetpack Room

#compose #cmp #kmp #android #ios #desktop #пример #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥63
⚙️ Вышел Jetpack Compose 1.10.0 Beta 2

Обновляйте зависимости или сразу всё через BOM файл:
dependencies {
implementation(
platform("androidx.compose:compose-bom-beta:2025.11.00")
)
}

#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚙️ ShadowGlow - open source библиотека для теней с широкими возможностями кастомизации. Поддержка только Android

Text(
text = "Solid Shadow",
modifier = Modifier
.shadowGlow(
color = Color.Black.copy(alpha = 0.5f),
borderRadius = 8.dp,
blurRadius = 10.dp,
offsetX = 4.dp,
offsetY = 4.dp
)
.background(Color.White)
.padding(16.dp)
)


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33
⚙️ Ускоряем рендеринг текста в Compose: фоновая предзагрузка

Традиционно измерение и кэширование текста происходит на UI-потоке, что для длинных текстов может создавать задержки. Начиная с версии 1.9, Compose позволяет вынести эти операции в фоновый поток. Для View уже давно была такая возможность, а вот на Compose ждали.

Как это работает на практике:
val textMeasurementExecutor = Executors.newSingleThreadExecutor()

CompositionLocalProvider(
LocalBackgroundTextMeasurementExecutor provides DefaultTextMeasurementExecutor
) {
// Весь текст внутри будет предзагружаться в фоне
Column {
Text("Заголовок")
Text("Длинный описательный текст...")
AnnotatedString("Форматированный текст")
}
}

Ключевые преимущества:
- Ускорение layout — предзаполнение word-cache происходит заранее
- Разгрузка UI-потока — тяжелые операции с текстом уходят в фон
- Особенно эффективно в списках (LazyColumn/LazyRow) с текстовым контентом
- Работает с любыми текстовыми компонентами — BasicText, Text, AnnotatedString

Когда стоит применять:
- Приложения с большими объемами текста (читалки, новости, документация)
- Списки с множеством текстовых элементов
- Сложные текстовые интерфейсы с форматированием

❗️Важный нюанс: Результаты могут варьироваться в зависимости от контента, поэтому всегда тестируйте производительность до и после внедрения.

Уже используете эту возможность? Делитесь результатами в комментариях!

#Compose #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍9🔥3