Mobile Compose
описание
Твой главный путеводитель в мир Jetpack Compose и Compose Multiplatform. Android XR: @android_xr Личный блог: @grigorievdy_blog Автор: @grigorievdy Поддержать канал: https://t.me/mobile_compose?boost
2 985
подписчиков
Охват к подписчикам
90,5%
ERR
Реакции к просмотрам
0,67%
873 на 42 постов
Пересылки к просмотрам
0,65%
853
Постов в день
0,0
всего 67
Где отзываются чаще
доля реакций к просмотрам- 31 мар.Maxимальные замедления Судя по последним новостям, в ближайшее время Telegram в РФ может начать работать ещё хуже — либо перестать работать вовсе. Однако мы все взрослые и понимаем, что на любое действие рано или поздно находится противодействие. Поэтому как оно появится — возвращайтесь, буду ждать вас тут с новой пачкой новостей о Compose.😉 Канал никуда переезжать не будет. © Григорьев Дмитрий #Offtop4,06%
- 24 июн. 2025 г.#UI #News #Compose 🎨 В Compose 1.9 завезли два новых модификатора теней: Modifier.dropShadow() и Modifier.innerShadow() в дополнение к уже привычному Modifier.shadow() с привязкой к elevation. Теперь можно делать куда более интересные и живые UI-эффекты — плюс, стилизация становится ближе к тому, что мы привыкли видеть в Figma. 🎨 Mobile Compose 💬 Чат канала ♾3,03%
- 26 июн. 2025 г.#UI #Modifier #Compose 🎨 С приходом Compose 1.9 была добавлена ещё одна долгожданная фича, о которой давно просили: возможность надёжно отслеживать, виден ли элемент на экране и получать уведомления о смене видимости. Встречаем два новых модификатора: Modifier.onFirstVisible() и Modifier.onVisibilityChanged() Пример использования (автоматическое воспроизведение/пауза видео): @Composable fun VideoFeed(feedData: List<Video>) { LazyColumn { items(feedData) { video -> VideoRow( video, Modifier.onVisibilityChanged { visible -> if (visible) video.play() else video.pause() }, ) } } } 🤖 Больше примеров с новыми модификаторами 🎨 Mobile Compose 💬 Чат канала ♾1,82%
- 5 мая#Compose #Performance #Recomposition 🎨 Compose 1.11.0 — Новая реализация SlotTable В Runtime Compose завезли новую экспериментальную реализацию SlotTable на базе LinkBuffer. Новая реализация теперь эффективнее обрабатывает точечные правки в дереве компонентов (random edits). Как итог — более шустрый динамический UI и меньший расход ресурсов памяти Как потестить? На данный момент новая реализация выключена по умолчанию. Если вы готовы к экспериментам и хотите проверить профит на своем проекте, её можно активировать вручную через специальный флаг: ComposeRuntimeFlags.isLinkBufferComposerEnabled = true 🎨 Mobile Compose 💬 Чат канала ♾1,52%
- 29 апр.#Compose #UI #Animation #Debugging 🎨 Compose 1.11.0 — Визуальная отладка анимаций Shared Elements анимации и работа с Modifier.animatedBounds стали прозрачнее благодаря инструменту LookaheadAnimationVisualDebugging. Ключевые возможности: ▫️Прямо в Runtime можно увидеть траектории движения объектов и их целевые границы (target bounds). ▫️Визуализация помогает понять, почему элемент «прыгает» или обрезается при переходе между экранами. Инструмент полезен в первую очередь для сложных UI-переходов, где раньше приходилось полагаться только на логи и интуицию. 🎨 Mobile Compose 💬 Чат канала ♾1,46%
- 30 апр.#Compose #UI #Tooling 🎨 Compose 1.11.0 — Preview wrappers Compose 1.11.0 делает шаг навстречу ментальному здоровью разработчиков и добавляет PreviewWrappers. В чем суть: раньше для каждого превью приходилось вручную писать обертку вроде AppTheme { ... }. Теперь можно создать один универсальный класс-обертку. Как это работает: ▫️Реализуете интерфейс PreviewWrapper, где в методе Wrap описываете нужный контекст (тему, CompositionLocals и т.д.). ▫️Вешаете аннотацию PreviewWrapperProvider на функцию превью. class ThemeWrapper: PreviewWrapper { @Composable override fun Wrap(content: @Composable (() -> Unit)) { JetsnackTheme { content() } } } @PreviewWrapperProvider(ThemeWrapper::class) @Preview @Composable private fun ButtonPreview() { Button(onClick = {}) { Text(text = "Demo") } } Плюсы: ▫️Чистый код: Превью-функции содержат только код самого компонента. ▫️Масштабируемость: Отлично работает с MultiPreview. Можно один раз настроить обертку для темной/светлой темы или разных локалей. ▫️Единообразие: Весь дизайн-код превью теперь живет в одном месте, а не размазан по проекту. Важно — чтобы это заработало, помимо версии Compose, необходимо обновить и Android Studio до актуальной версии. 🎨 Mobile Compose 💬 Чат канала ♾1,24%
- 9 дек.#Release #UI #Compose ✨ Одна из новых интересных новинок в Compose 1.10 — Modifier.scrollableArea() Если упростить: ▫️Modifier.scrollable() просто сообщает, как двигался pointer, ▫️Modifier.scrollableArea() уже переводит это движение в то, как должен двигаться контент внутри обычного скролла. Этот модификатор идеально подходит для случаев, когда verticalScroll / horizontalScroll не хватает, но при этом хочется больше дефолтной логики, чем у низкоуровневого scrollable(). scrollableArea() аккуратно занимает место между двумя существующими вариантами — и закрывает множество кастомных сценариев. 🎨 Mobile Compose 💬 Чат канала ♾1,01%
- 31 дек.без подписи0,98%
- 5 мая#Compose #Performance #UI 🎨 Compose 1.11.0 — MediaQuery API Представлен новый экспериментальный MediaQuery API. Это попытка стандартизировать адаптивную верстку без нагромождения проверок WindowSizeClass. Ключевые фичи: ▫️Отслеживание не только размера окна, но и типа клавиатуры, точности указателя (перо vs палец) и положения складных устройств. ▫️derivedMediaQuery: Специальный механизм для оптимизации обновлений при высокой частоте изменения сигналов. До MediaQuery API: @Composable fun isTabletopPosture( context: Context = LocalContext.current ): Boolean { val windowLayoutInfo by WindowInfoTracker .getOrCreate(context) .windowLayoutInfo(context) .collectAsStateWithLifecycle(null) return windowLayoutInfo.displayFeatures.any { displayFeature -> displayFeature is FoldingFeature && displayFeature.state == FoldingFeature.State.HALF_OPENED && displayFeature.orientation == FoldingFeature.Orientation.HORIZONTAL } } @Composable fun VideoPlayer() { if(isTabletopPosture()) { TabletopLayout() } else { FlatLayout() } } С MediaQuery API: @OptIn(ExperimentalMediaQueryApi::class) @Composable fun VideoPlayer() { if (mediaQuery { windowPosture == UiMediaScope.Posture.Tabletop }) { TabletopLayout() } else { FlatLayout() } } 🎨 Mobile Compose 💬 Чат канала ♾0,94%
- 22 мая 2025 г.#GoogleIO #Compose #Navigation ❤️ Jetpack Navigation 3 Несмотря на обилие различных библиотек для навигации, Jetpack Navigation 2, даже с учётом своих недостатков, на протяжении многих лет оставалась предпочтительным вариантом для многих приложений. Теперь Google представили Jetpack Navigation 3 (Nav3) — новую библиотеку навигации, написанную с нуля специально для Compose приложений. Основные принципы Nav3: ▫️Декларативный стиль и работа вокруг state ▫️Самостоятельное управление back stack ▫️Поддержка Predictive Back ▫️Поддержка кастомных анимаций ▫️Поддержка гибких макетов экранов 😇 Читать подробнее о Nav3 🎨 Mobile Compose 💬 Чат канала ♾0,93%
- 29 апр.#Release #Compose #Changelog 😇 Релиз Compose библиотек (22.04.2026) 🔵 Animation 1.11.0/1.12.0-alpha01 🔵 Foundation 1.11.0/1.12.0-alpha01 🔵 Material 1.11.0/1.12.0-alpha01 🔵 Runtime 1.11.0/1.12.0-alpha01 🔵 UI 1.11.0/1.12.0-alpha01 ▫Remote 1.0.0-alpha09 ▫Material 3 1.5.0-alpha18 ▫Navigation3 1.1.1/1.2.0-alpha02 🎨 Список всех изменений 🎨 Mobile Compose 💬 Чат канала ♾0,81%
- 10 сент. 2025 г.#Article #Habr #Navigation #Compose 🎨 Compose + Koin + Jetpack Navigation: что мы поняли за 2 года Статья от ребят из WB про их опыт внедрения Jetpack Compose, адаптацию архитектуры и то, к чему всё это привело спустя 2 года разработки. 📖 Читать статью 🎨 Mobile Compose 💬 Чат канала ♾0,76%