Довольно большой обзор(EN,19м) как работает плагин Kotlin компилятора Jetpack Compose для генерации кода Composable функций
#compose
#compose
❤26🔥8👍3
Open Source шаблон для нового KMP проекта для Android и iOS: Clean Arch, MVVM, Koin, Ktor, SqlDelight, Coil
👍41
Вышел Haze 1.2.0 разных зон эффектов, что позволяет сделать наложение как на картинке
Также произошло переименование API
👉 Modifier.haze -> Modifier.hazeSource
👉 Modifier.hazeChild -> Modifier.hazeEffect
👉 HazeChildScope -> HazeEffectScope
#compose #kmp
Также произошло переименование API
👉 Modifier.haze -> Modifier.hazeSource
👉 Modifier.hazeChild -> Modifier.hazeEffect
👉 HazeChildScope -> HazeEffectScope
#compose #kmp
👍52❤6🔥2
Composable Preview Scanner - библиотека для автоматической генерации кода скриншот тестов из Composable Preview на основе популярных библиотек: Paparazzi, Roborazzi, Shot, Dropshots, Android-Testify и др.
По заявление автора, обладает большими возможностями чем Showkase и Compose Preview Screenshot Testing (находится в разработке)
#compose #тестирование
По заявление автора, обладает большими возможностями чем Showkase и Compose Preview Screenshot Testing (находится в разработке)
#compose #тестирование
❤18👍4
Как на Compose сделать (EN, 4м) красивый Edge-toEdge UI на всех версиях Android - используйте правильную настройку Activity и применяйте Modifier.windowInsetsPadding(WindowInsets.systemBars)
#compose #android #edgetoedge
#compose #android #edgetoedge
👍23👌3
Composition Local - удобный механизм Compose, позволяющий передать значения всем вложенным Composable функциями и переопределять его. Если еще не успел с ним познакомиться - читайте статью (EN,10м) и официальную документацию
#compose
#compose
👍39
Forwarded from Why Android? 🌚
This media is not supported in your browser
VIEW IN TELEGRAM
Начиная с IntelliJ IDEA 2025.1 EAP можно запускать адекватное Compose Preview прямо из commonMain и без всяких костылей 🌚
youtrack
youtrack
👍79🎉28🔥10❤4
На сайте JetBrains появилась страница с описанием различий между Compose Multiplatform от JetBrains и Jetpack Compose от Google.
Ключевые различия:
👉 Jetpack Compose фокусируется на Android, и не все компоненты доступны из общего (Kotlin common) кода в Compose Multiplatform.
👉 Compose Multiplatform включает множество платформенно-специфичных API: Desktop, Web, iOS. Эти API недоступны из общего кода.
👉 Некоторые библиотеки для Compose публикуются JetBrains с отдельными пакетами, чтобы добавить поддержку Compose Multiplatform.
Этот момент не упомянут в статье, но важным различием являются инструменты для разработки: для Compose Multiplatform они пока находятся на более ранней стадии и уступают Jetpack Compose.
#compose #cmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28❤3
Forwarded from Android Broadcast
Очень подробный гайд по тому, как оптимизировать производительность приложения через использование стабильных типов для меньшего числа рекомпозиций.
Разбираются:
👉 Что такое Stable тип
👉 Как происходит рекомпозиция
👉 Restartable и Skippable Composable функции
👉 Compose Compiler Metrics
👉 Аннотации Immutable и Stable
👉 Аннотация NonRestartableComposable
👉 Как стабилизировать Composable функции
👉 Strong Skipping Mode
#compose #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35
Вышел Haze 1.3.0 - библиотека для размытия в стиле glassmorphism для Compose MP
Что нового:
👉 Добавлен эффект радиального прогрессивного размытие
👉 Поддержка Brush в tint
👉 Больше примеров использования
#compose #kmp
Что нового:
👉 Добавлен эффект радиального прогрессивного размытие
👉 Поддержка Brush в tint
👉 Больше примеров использования
#compose #kmp
GitHub
Release 1.3.0 · chrisbanes/haze
What's Changed
Add Brush support to HazeTint by @chrisbanes in #481
Move all samples to shared by @chrisbanes in #484
Add Bottom Sheet sample by @chrisbanes in #485
Fix alpha property changes ...
Add Brush support to HazeTint by @chrisbanes in #481
Move all samples to shared by @chrisbanes in #484
Add Bottom Sheet sample by @chrisbanes in #485
Fix alpha property changes ...
🔥20❤2👍2
Когда использовать?
✅ Функция является обёрткой над другой 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 #оптимизации
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🔥1👏1