tgindex

Compose Broadcast

описание

Все о Jetpack Compose и Compose Multiplatform По сотрудничеству - @ab_manager

5 919
подписчиков
Охват к подписчикам
75,0%
ERR
Реакции к просмотрам
0,77%
2 200 на 50 постов
Пересылки к просмотрам
0,82%
2 338
Постов в день
1,6
всего 364

Где отзываются чаще

доля реакций к просмотрам
  • 4 мар.🤯 Конец Android View ближе чем кажется - в будущей версии Android Studio убирают поддержку превью для Custom View. Источник - сайт Android Developers #Android #AndroidDev #Compose #AndroidStudio2,49%
  • 16 авг.⚙️ MCP сервер в для Compose Desktop: агент сам видит UI и кликает В Compose Multiplatform 1.12.0-rc01 (через Compose Hot Reload 1.2.0) появился экспериментальный MCP-сервер для Hot Reload. Агент теперь может: 👉 reload — пересобрать и хотрелоудить 👉 take_screenshot — снять текущее окно 👉 get_semantic_tree — получить semantic tree (включая Dialog/Popup) 👉 click / type_text / scroll — симулировать ввод 👉 get_logs — читать runtime-логи и ошибки Подключается через Gradle-таску. В конфиге агента (.mcp.json): { "mcpServers": { "compose-hot-reload": { "command": "./gradlew", "args": [ "--no-daemon", "--quiet", "--console=plain", "hotMcpServer" ] } } } #Compose #CMP #Desktop #HotReload2,26%
  • 19 мая‼️ Android View всё! Да здравствует Compose! Google официально объявила о переходе к стратегии «Compose-first» и прекращении развития Android View, переводя его в режим поддержки. Что это значит: 👉 Классы android.widget.* в Android SDK будут находиться в режиме поддержки. 👉 Библиотеки Android Jetpack (включая RecyclerView) также переходят в режим поддержки. 👉 Все инструменты в Android Studio будут создаваться только для Compose. 👉 Документация будет писаться только для Compose, однако некоторые разделы про View останутся. 🔗 Источник - оф сайт Android Developers #Android #AndroidDev #Compose2,15%
  • 27 маяПредставлена альфа-версия 0.0.4 проекта адаптации Compose Multiplatform для ОС Аврора Проведена глубокая работа над инструментарием, экосистемой и стабильностью фреймворка, чтобы разработчики могли комфортно создавать мобильные приложения для доверенной операционной системы используя привычный инструментарий — язык программирования Kotlin. Альфа-версия фреймворка Compose Multiplatform опубликована в репозитории mos.hub под открытой лицензией. Каждый желающий имеет возможность внести свой вклад и, тем самым, повлиять на развитие проекта. Главные изменения в альфа-версии 0.0.4 проекта адаптации Compose Multiplatform для ОС Аврора: Инструментарий разработчика • Aurora Build — Gradle-плагин для сборки проектов под ОС Аврора • Aurora Devices — Gradle-плагин для запуска приложений на устройстве и в эмуляторе Расширение возможностей фреймворка • Поддержка системного буфера обмена • Поддержка ресурсов • Поддержка локализации приложений Поддержка новых платформ для разработки • Добавлена поддержка Windows • Добавлена поддержка macOS (частичная) Экосистема и библиотеки • Новая библиотека для работы с D-bus из Kotlin и поддержка популярных библиотек build-konfig, datetime, kamel, kermit, koin, ktor и sqldelight Качество и стабильность • Исправлены проблемы с многопоточностью • Добавлена поддержка Unit и интеграционного тестирования. Все компоненты экосистемы Kotlin для ОС Аврора получают поддержку многоуровневого тестирования в рамках стабилизации Референсные приложения • Опубликовано референсное приложение StudentBox CMP Новая версия уже доступна для разработчиков.Пробуйте прямо сейчас — все примеры и API в документации. Хотите помочь проекту стать лучше? Присоединяйтесь к разработке на mos.hub. Мы открыты к вашему коду и экспертизе. Вместе мы сможем сделать инструмент максимально полезным для всего сообщества. Ссылка на репозиторий #АврораОС @AuroraDevelopers2,01%
  • 13 авг.🚀 В Compose 1.12.0 прокачали производительность и по бенчмарку Google, на котором тестируются все версии, уже сравнялись с View. Очень хочется верить в то, что это реально, а также что это можно сделать просто без отладки и замера характеристик рендеринга. #Compose #Performance1,92%
  • 3 мая🤖 Styles API в Compose: революция в кастомизации UI До недавнего времени стилизация компонентов в Compose делалась через параметры Composable функции (color = ..., padding = ...) или модификаторы. Это работало, но могло приводить к: 👉 избыточным рекомпозициям при смене состояний; 👉 дублированию кода для разных вариаций кнопок/карточек; 👉 сложностям с анимацией переходов между стилями. Google представил Styles API (экспериментальный, о причинах такого статуса ниже) — новый подход, вдохновлённый CSS. Нужен Jetpack Compose 1.11.0 или свежее Ключевые возможности 1️⃣ Производительность Стили вычисляются на этапах layout и drawing, минуя composition. Это значит, что изменение стиля (например, при наведении) не вызывает рекомпозицию родительских компонентов. 2️⃣ Работа с состояниями Без кучи if/else и animate*AsState. Просто описываете стиль для каждого состояния (нажат, сфокусирован, включён, ошибка и т.д.). 3️⃣ Встроенные анимации Переходы между состояниями анимируются автоматически с физическими параметрами (демпфирование, жёсткость). Не нужно писать Animatable или Transition. // Пример использования стиля // Определяем стиль для кнопки val buttonStyle = Style { default { backgroundColor = Color.Blue shape = RoundedCornerShape(8.dp) } pressed { backgroundColor = Color.DarkBlue scale = 0.98f } disabled { backgroundColor = Color.Gray alpha = 0.5f } } // Используем Button( onClick = { /* ... */ }, style = buttonStyle, // ← вместо кучи параметров enabled = isEnabled ) { Text("Нажми меня") } style — новый параметр, который появляется у всех компонентов Material 3 и базовых (Box, Row, Column). ⚠️ Styles API не заменяет модификаторы Модификаторы остаются для позиционирования, кликов, размеров. Styles API заменяет только внутреннюю стилизацию (цвета, формы, тени, отступы внутри компонента). Это как разделение «темы» и «вёрстки». API остаётся экспериментальным пока на него полностью не перейдет Material 3 Compose, чтобы учесть все необходиcмоти API и не делать breaking changes. По работе оно уже стабильно, но вот изменения в коде, возможно, будут. 🔗 Официальная документация В целом с таким подходом уже привыкли работать в Android XML Layout, то почему бы сразу было его не использовать? Тем более в Compose плюсы очевидны! 💬 Пробовали уже играться со Styles API? Как вам идея отделить стили от композиции? Делитесь мнениями в комментариях 👇 #Compose #Material1,76%
  • 13 авг.⚙️ Улучшения текстовых полей в Compose 1.12.0 👉 В BasicTextField можно теперь программно применять SpanStyle и ParagraphStyle через edit { addStyle(...) }: state.edit { addStyle(SpanStyle(fontWeight = FontWeight.Bold), start = 0, end = 9) } Стили сохраняются при смене конфигурации. 👉 Программное управление выделением. Новый SelectionState с методами selectAll(), clear(), select(range) и extendSelectionByWord() val selectionState = rememberSelectionState() val characterCount = selectionState.selectedTexts.sumOf { it.text.length } Column { SelectionContainer(state = selectionState) { Column { BasicText(text = "Text to be selected...") } } if (characterCount > 0) { BasicText(text = "Characters selected: $characterCount") } } 👉 Текстовые поля теперь нативно поддерживают Android Credential Manager (API 34+) через семантическое свойство credentialRequest. Passkeys, сохранённые учётные данные — прямо из поля ввода. 👉 Новые KeyboardType: Date, Time, DateTime, SignedDecimal. 👉 BasicSecureTextField теперь по умолчанию использует TextObfuscationMode.System #Compose1,59%
  • 19 мар.⚙️ Rebound — бюджеты рекомпозиций для Compose Одна из моих любимых тем в Compose-разработке — отладка рекомпозиций. Layout Inspector, Rebugger, ComposeInvestigator — всё это хорошие инструменты, но у них общий слепой угол: они говорят сколько рекомпозиций, но не отвечают на вопрос нормально ли это для данного компонента. HomeScreen, который рекомпозируется 10 раз в секунду — это проблема. Анимация, которая делает то же самое — это норма. Число одинаковое, вывод противоположный. Библиотека работает на основе Kotlin compiler plugin, который классифицирует каждый @Composable по роли и назначает ему бюджет рекомпозиций: 1️⃣ Screen — 3/s. Если экранный компонент рекомпозируется чаще, state утекает вверх по дереву 2️⃣ Leaf — 5/s. Text, Icon, Image — дёшевы сами по себе, но не должны «молотить» 3️⃣ Animated — 120/s. Всё, что использует animate*, Transition, Animatable — пусть работает 4️⃣ Container — 10/s, Interactive — 30/s, List Item — 60/s При скролле бюджеты удваиваются, при анимации и вводе — умножаются на 1.5. Контекст учитывается. Когда что-то выходит за рамки, в логах появляется не просто число, а конкретика: BUDGET VIOLATION: ProfileHeader rate=11/s exceeds LEAF budget=5/s -> params: avatarUrl=CHANGED, displayName=CHANGED -> forced: 0 | param-driven: 11 | interaction: IDLE 🔨 Плюс IDE-плагин с live-деревом, таблицей горячих точек, timeline-хитмапой, и самое полезное — цветными иконками прямо в редакторе. Зелёный/жёлтый/красный кружок рядом с каждым @Composable. Никакого переключения контекста. Попробую на своих проектах (только не отправляй в прод) — идея с контекстными бюджетами кажется мне намного честнее, чем единый порог для всех компонентов. Решение пока не достигло версии 1.0 но это и некритично, так как не влияет на продакшен код. 🔗 Источник: adital.dev 🐱 Исходники на GitHub #Android #Compose #AndroidDev #Производительность1,46%
  • 17 авг.JetBrains исследует Compose HTML для Server-Side Rendering (SSR) Frederik Pietzko из JetBrains решил проверить идею: что если Compose-компоненты рендерить в HTML на сервере, а не только в canvas/JS. В Compose добавляется обычная функция с типами: @Composable fun Card(title: String, count: Int) { Div({ classes("card") }) { H3 { Text(title) } Span { Text(count.toString()) } } } Идея — добавить функции Compose HTML renderToString / renderToBytes, чтобы один раз прогнать composition и получить строку HTML. Без браузера, без DOM, без recomposition и effects (как классический SSR). Пока речь идет только про JVM тартег Мне нравится направление. Если Compose HTML получит нормальный серверный рендер, у Kotlin наконец появится шанс на type-safe fullstack без ухода в JS-фреймворки. Пока же это просто интересный разговор, который стоит почитать. 🔗 Источник #Compose #ComposeHTML #Kotlin #SSR1,37%
  • 13 авг.⚙️ Compose Grid стал удобнее Теперь области можно задавать через имя в Grid в дополнение к индексу. Дайте областям имена и размещайте элементы с помощью gridItem(areaId = "header"): Grid( config = { area("header", row = 0, column = 0, rowSpan = 1, columnSpan = 2) area("sidebar", row = 1, column = 0) area("content", row = 1, column = 1) } ) { HeaderSection(modifier = Modifier.gridItem(areaId = "header")) Sidebar(modifier = Modifier.gridItem(areaId = "sidebar")) Content(modifier = Modifier.gridItem(areaId = "content")) } #Compose1,30%
  • 3 авг.без подписи1,28%
  • 29 июл.5️⃣ лет назад вышел Jetpack Compose 1.01,28%