Вы наверняка знаете о проекте "Кибердеревня" от творческой группы Birchpunk. У них же есть совместная песня с петрозаводским рэпером Albatross, где главный герой читает из будущего о войне с машинами. Там звучат такие строчки:
You will never see a normal sidewalk indeed
But every moron has a phone with FaceID
Он рассуждает о том, что человечество использует технологии неправильно: раз техническое развитие позволяет буквально каждому дураку иметь hi-end устройство с крутыми функциями, почему мы не можем сделать в городах нормальные тротуары?
Online cameras watch the hood, delivery droids carry the food
But my babushka* has to go to hospital on foot
We use technology for something wrong
If you're indifferent, why robots should be strong?
Я и задумался: а правда, почему так получается? Человечество достигло невероятных высот в обслуживании индивидуума. У нас с вами в домах висят экраны на всю стену и стоят процессоры из нанометрового кремния, выполняющие по триллиону операций в секунду с данными на другом конце планеты. Роботы стирают, убирают и моют посуду, некоторым людям лечат технологиями полную глухоту, стабилизируют электроникой сердцебиение. Мы используем топовые материалы для вещей вокруг нас и для производства одежды, беговые кроссовки могут стоить несколько тысяч долларов и вовлекать совокупный труд тысячи человек.
Как получилось, что цивилизация с таким развитием допускает на улицах мусор и разбитый асфальт? Почему у нас так плохо решены социальные проблемы? Почему бывают бомжи и алкоголики? Почему существует грязь и упадок в отдельных местах?
Можно подумать, что люди не готовы платить за общее, а готовы только за личное, но я не верю в это. Я вот готов платить, и, думаю, таких много. Но почему-то экономика работает здесь странным образом: обычная квартира может стоить, например, 10 миллионов рублей, а абсолютно такая же квартира в жилом комплексе с хорошим двором уже 20 миллионов. Как так выходит? Если с каждой из тысячи квартир собрать по 10 миллионов сверху, получится 10 миллиардов — неужели двор столько стоит? Я уверен, что даже с учётом распилов и откатов нет, и можно сделать на два порядка дешевле. Вообще очень многие места по моим наблюдениям можно улучшить небольшими силами. Но заплатить эти деньги не предлагают, видимо, считают, что люди платить не станут.
Если так, то почему? Где развитие общества пошло не так? Как мы, человечество, вообще дошли до такой сильной разницы между индивидуальным и общим?
#life
* автор использует смесь русского и английского в песне, говорит с умышленно выраженным акцентом, а ещё ведёт для англоговорящих людей обучающие видеоролики по разговорному русскому, поэтому применяет известный в англоязычном мире термин babushka вместо grandma.
HotSwan - быстрое обновление Composable на реальном устройстве. Доступно как плагин для Android Studio
Я выбрал другой путь - делаю СMP проект с поддержкой Android + Desktop JVM и так можно быстро проверять + делать код чище.
#Compose
⚙️ Нашел сайт с демонстрацией того как происходит рекомпозиция с примером хороших и плохих практик
Как была сделана реализация написали в статье, а исходники есть на GitHub
#compose
⚙️ Нужно ли проставлять аннотации @Stable и @Immutable сразу при написании кода? 🤔 Мой ответ — НЕТ!
Не стоит заниматься преждевременной оптимизацией. Пишите UI без оглядки на аннотации стабильности, а затем используйте инструменты анализа, чтобы определить, где действительно возникают лишние рекомпозиции и есть смысл оптимизировать типы.
Как анализировать рекомпозиции и пропуски?
👉 Используйте Layout Inspector в Android Studio (подробнее — в этом посте)
👉 Включайте отслеживание работы composable-функций в System Trace
👉 Можно воспользоваться библиотекой Compose Investigator, чтобы получать детальные логи по рекомпозициям
‼️Важный нюанс:
Если вы используете типы из внешних библиотек или из модулей, где не подключён Compose Compiler, такие типы всегда считаются Unstable. Это может приводить к лишним рекомпозициям.
🚀Strong Skipping Mode действительно упростил жизнь разработчикам, но старайтесь передавать в параметры Сomposable-функций только Stable или Immutable типы. Это позволит максимально эффективно использовать skipping и сделать UI более производительным.
#compose
Вышел Coil 3.2.0
Что нового
⬆️ Обновление Kotlin, Compose, Okio, Skiko, Coroutines и др зависимостей до актуальных версий
🛠 Исправление багов
👉 Compose артефакты требуют Java 11 и выше из-за перехода на Compose 1.8.0
#compose
⚙️Вышел Jetpack Compose 1.10.0
👉 Стабильное API Shared Transition
👉 Оптимизированный скролл
👉 Новые подходы к сохранению данных при пересоздании Activity через ViewModel
🚀 Повышена производительность UI на Compose
🛠 Исправлено багов и шероховатостей
Изменений действительно много — в один пост всё не поместить.
Буду разбирать ключевые обновления по отдельности в следующих публикациях на @compose_broadcast✨
#compose#android
🤖 Как использовать Compose, чтобы сделать анимированный Splash Screen
Разработчик создал библиотеку androidx-splashscreen-compose (не от Google решение), которая позволяет делать красивую анимацию как на анимашке.
Подробный разбор и реализация есть в статье (EN,6м, альт. ссылка) или 🐱исходниках на GitHub
#android#compose
⚙️Вышел Jetpack Compose 1.9 Stable (августа 2025)
Главные новинки:
👉 Тени нового поколения — dropShadow() и innerShadow() дают больше контроля, чем классический shadow().
👉 LazyLayout — новый API предзагрузки и кэширования элементов для более плавного скролла.
👉 2D-прокрутка — Scrollable2D для таблиц, карт и больших изображений.
👉 Расширенный stack trace — имена composable и их позиции для отладки в stacktrace (только в debug).
👉 Новые аннотации — @RememberInComposition, @FrequentlyChangingValue и перенос @Stable в отдельный модуль.
Подробнее буду рассказывать в @compose_broadcast. Подписывайтесь!
#compose#android
📹Mastering text input in Compose (EN, 18м)
Google выпустили шикарное видео, где показали лучшие практики работы с текстовыми полями в Compose — с примерами, API и лайфхаками.
В ролике разработчики на примере рассказывают:
👉 как использовать state-based TextField — новый подход к управлению вводом;
👉 зачем нужен SecureTextField и как задать требования к паролю;
👉 как работает Autofill API (да, теперь можно сохранять логины и OTP);
👉 как кастомизировать поле ввода OTP с помощью BasicTextField и decorator;
👉 как принимать GIF и изображения через drag & drop с новым contentReceiver;
👉 как использовать input/output трансформации для автоподстановки скобок и тире в номерах;
#android#compose
⚙️ Вышел Jetpack Compose 1.8.0
Все новинки расскажу отдельными постами в @compose_broadcast, а именно:
👉 Autofill
👉 ресайзинг текста под контейне
👉 новое API для отслеживания Composable на экране
👉 анминирование границ Composable
👉 стабилизация API (убрали экспериментальные аннотации)
👉 ContextualFlowRow и ContextualFlowColumn теперь deprecated, им на замену используйте FlowRow и FlowColumn
👉 диалоги теперь учитывают режим экрана edge-to-edge
👉 упростили тестирование ClickableText
👉 появилась возможность кастомизации overscroll
Свежий BOM для новых версий
implementation(platform("androidx.compose:compose-bom:2025.04.01"))
#compose#android
⚙️Как работать с Custom Layout в Jetpack Compose (21м)
В этой статье вы найдете:
👉 как работают layout-ы в Compose;
👉 изменение layout-а отдельного компонента;
👉 создание кастомных Layout и LazyLayout;
👉 отложенную композицию.
Всё это на примерах, в том числе из дизайн-системы Авито.
#compose#android