Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on null in /var/www/tgoop/function.php on line 65
796 - Telegram Web
Telegram Web
⚙️ Вышел 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
🔥566👍4
Compose Broadcast pinned «⚙️ Вышел Jetpack Compose 1.9.0 Stable Вышла следующая стабильная версия UI фреймворка для Android. Что нового: 👉 Появилась модификаторы для работы с тенями Modifier.dropShadow() и Modifier.innerShadow(). Уже существующий Modifier.shadow() рисует тень за…»
⚙️ Новые аннотации в Compose для повышения качества написания Compose

В Compose 1.9 появились новые аннотации на основе которых будут работать Android Lint проверки:

✔️ @RememberInComposition - помечает конструктор или функцию, что внутри composition их нельзя вызывать напрямую — только через remember.

📝 Когда использовать:
- Если API возвращает состояние или изменяемый объект, который нужно переиспользовать между composition.
- Если возвращается объект, чья идентичность важна (например, ключ для другой API).
- Если создание объекта дорого по ресурсам и нужно кешировать.


✔️ @FrequentlyChangingValue предупреждает, что получение значения (функции или геттера) может вызвать много перерисовок из-за частого обновления значения (например, при использовании положения скролла или анимаций).

📝 Как избежать лишних перерисовок:
- Используйте derivedStateOf — фильтруйте изменения состояния, реагируя только на нужные.
- Используйте snapshotFlow + LaunchedEffect — работайте с изменениями без рекомпозиции.
- В UI-компонентах читайте значение на стадии measure / layout / draw, чтобы вызывать только инвалидацию нужной фазы, а не всю рекомпозицию.
- Делайте анализ работы вашего кода, например через Layout Inspector


Всем рекомендую озаботится аннотированием общего API Compose кода ваших проектов и регулярно запускать Android Lint, чтобы предотвратить ошибки, негативно влияющие на скорость работы UI

#compose #ui #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍376
⚙️ 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🔥10
🚀 Jetpack Navigation3 Multiplatform уже на подходе. Залили сборку в Core Multiplatform библиотеки. Артефакта нигде не нашел, так что ждем публикации

Jetpack Navigation3 - это новая библиотека Google для навигации, построенная специально для Compose, построенная вокруг состояния стека


Подробности в issue, а исходники на 🐱 GitHub

#compose #multiplatform
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥46🤔2
🔥 Jetpack Navigation 3 теперь мультиплатформенная!

В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS

Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для ⚙️ Compose Multiplatform от JetBrains

#compose #kmp #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47👍8🤔51
Архитектор Jetpack Compose покидает Google 🤯 Пошел в Anthropic занимать AI

Источник
🤯5319
⚙️ Разбор новых теней в Compose 1.9 (EN,5м)

В Compose 1.9.0 добавили больше возможностей управления тенями и их типами.

Modifier  
.size(300.dp)
.background(Red300)
.innerShadow(
shape = RectangleShape
block = {
radius = 50f
}
)
.dropShadow(
shape = RectangleShape
block = {
radius = 50f
}
)


#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥484
‼️ Опубликовали первую сборку Navigation3 для Compose Multiplatfom

Подкючайте артефакт org.jetbrains.androidx.navigation3:navigation3-ui:1.0.0-alpha01 в common код и можете пробовать

Ждем актуализации до свежей альфа версии, а также адаптивные layout и интеграцию с ViewModel

#compose #kmp #naviation #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥4🤔2
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
146🔥10👍4
⚙️ Вышел Compose Multiplatform 1.9.0: Web перешло в Beta

Что нового для всех таргетов:
👉 Аннотация @Preview в common коде теперь поддерживает задание параметров (имя для отображения, размеры и прочее)
👉 Больше возможностей по управлению тенями
👉 Адаптировали новое API для управления контекстным меню из Android под все платформы. Требуется включение через код
ComposeFoundationFlags.isNewContextMenuEnabled = true

👉 Тема Material Expressive
👉 Артефакт androidx.compose.runtime:runtime стал мультиплатформенным, перенеся наработки из org.jetbrains.compose.runtime:runtime
👉 runComposeUiTest() теперь позволяет запускать suspend функции в теле вызова

Compose/iOS
👉 Управление желаемой частотой кадров для рендера Composable
Modifier.preferredFrameRate(FrameRateCategory.High)
Modifier.preferredFrameRate(120f)

👉 Поддержка кастомизаций ввода, специфичных для iOS
BasicTextField(
value = "",
onValueChange = {},
keyboardOptions = KeyboardOptions(
platformImeOptions = PlatformImeOptions {
keyboardType(UIKeyboardTypeEmailAddress)
}
)
)


Compose/Web
🎉 Поддержка Web таргета перешло в Beta статус
👉 Поддержка Accessibility API
👉 Новое API для встраивания HTML
private val ttOSM =
"https://www.openstreetmap.org/export/embed.html?bbox=4.890965223312379%2C52.33722052818563%2C4.893990755081177%2C52.33860862450587&layer=mapnik"

@Composable
fun Map() {
Box(
modifier = Modifier.fillMaxWidth().fillMaxHeight()
) {
WebElementView(
factory = {
(document.createElement("iframe")
as HTMLIFrameElement)
.apply { src = ttOSM }
},
modifier = Modifier.fillMaxSize(),
update = { iframe -> iframe.src = iframe.src }
)
}
}

👉 Упростили связывание Jetpack Navigation c навигацией в браузере
// Код в Composable функции
LaunchedEffect(Unit) {
// Implicitly accesses the window object
navController.bindToBrowserNavigation()
}


Compose/Desktop
👉 Возможность настройки окна с контентом с помощью API SwingFrame() and SwingDialog(), аналогичные Window() and DialogWindow(). Разница то что новые API конфигурируются в init блоке до показа UI.

#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥293👍2
2025/10/21 18:25:14
Back to Top
HTML Embed Code: