#jetpack_compose

2026-01-18

Создаём iOS-style Wheel Picker в Jetpack Compose. Часть 1

Представьте классический сценарий в мобильном приложении: пользователю нужно выбрать год рождения, час будильника или количество товаров в корзине. На iOS для таких случаев давно существует элегантное и интуитивное решение - Wheel Picker (или UIPickerView ). Этот компонент стал неотъемлемой частью языка дизайна Apple. В этой статье я расскажу вам, как реализовать такой же компонент в Android. Приготовьтесь, будет много математики!

habr.com/ru/articles/986270/

#jetpack_compose #pickerview #picker #android

2026-01-07

Анимация смены темы в Compose Multiplatform

Анимация смены темы в Android-версии Telegram на протяжении долгого времени вдохновляет разработчиков на попытки реверс-инжениринга этого красивого трюка: в сети немало подробных гайдов, как сделать подобную анимацию при помощи традиционных XML View и даже Flutter. Но реализаций этой элегантной (хоть и совершенно бесполезной) анимации на Jetpack Compose мне найти так и не удалось, что привело к созданию маленькой библиотеки для анимирования смены темы. Вера в будущее KMP также подтолкнула меня к тому, чтобы сделать ее из коробки готовой к установке в Compose-Multiplatform проекты, с поддержкой всех основных платформ (Android, iOS, Desktop JVM, Web WASM+JS). Хотя сама библиотека вышла крайне компактной, ее реализация оказалась довольно нетривиальной на мой субъективный взгляд и может быть интересна каждому, кто изучает Compose или ищет подобные решения для своего проекта. На старте написания библиотеки сами собой возникли ряд требований, которым она должна была отвечать:

habr.com/ru/articles/983488/

#compose_multiplatform #kotlin_multiplatform #jetpack_compose #android #animations

2025-12-24

Тепловизор для разработчика: подсвечиваем рекомпозиции прямо в коде

Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. В прошлой статье я научил Jetpack Compose показывать рекомпозиции в реальном времени , но это был скорее учебный стенд: куча модификаторов, обёрток и примеры, которые нужно готовить вручную. Я хотел чего‑то более полезного: чтобы IDE сама показывала, какие composable‑функции перерисовываются прямо сейчас, а какие скипаются и какие параметры реально меняются. Нажал Run — и редактор превратился в живую тепловую карту UI. Ради этого пришлось сделать то, чего нормальные люди обычно избегают: залезть под капот Kotlin Compiler Plugin и научиться внедрять код в промежуточное представление на этапе компиляции, разобраться в битовых масках Compose и поднять TCP‑сервер внутри IntelliJ, чтобы запущенное приложение могло стучаться прямо в IDE. Так появился Riflesso — плагин, который переносит идею Layout Inspector прямо в редактор кода и делает Compose прозрачным. В этой статье я разберу его архитектуру и покажу, как компилятор, клиентская библиотека и плагин IDE собираются в один инструмент.

habr.com/ru/companies/yandex/a

#jetpack_compose #kotlin #рекомпозиция #android #мобильная_разработка

2025-12-09

Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений

Привет, Хабр! Меня зовут Максим Сазонов, я android-разработчик в ПСБ. Сегодня предлагаю разобрать путь создания кастомного тулбара от первой кривой реализации до оптимизированного решения. И главная проблема, которую надо решить при создании этого компонента это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle. В статье я расскажу, как я решил этот вопрос.

habr.com/ru/companies/psb/arti

#kotlin #android #android_development #jetpack_compose #jetpack #toolbar #custom_toolbar

2025-12-02

Как мы создали деплой-инструмент для 100+ серверов на Jetpack Compose и GitLab API

Всем привет! Меня зовут Сергей, и я Backend Kotlin разработчик в компании занимающейся разработкой систем повышающую безопасность дорожного движения. И я расскажу, как мы с помощью Jetpack Compose и GitLab API упростили процесс деплоя на 100+ распределённых серверов, повысив при этом удобство и предсказуемость процесса.

habr.com/ru/articles/972588/

#jetpack_compose #deployment #deploy #deployment_tools #kotlin #kotlin_multiplatform #kotlin_coroutines #gitlab #git #ci

2025-11-25

Почему ваш кастомный будет ломать TextField (и как это починить)

Разрабатывая приложение под Android — мы встроили в продукт свой мессенджер и решили, что стандартные андроидные смайлики — это преступление против дизайна. Telegram и другие популярные мессенджеры давно показали, как должны выглядеть эмоции в чате, а Google всё ещё живёт в 2015-м с Noto Color Emoji. Хотели просто подменить парочку 😎👩‍💻🙂 на свои красивые… И получили войну: курсор, который живёт своей жизнью, тофу, кернинг и полный хаос при вводе. Эта статья — история о том, как мы прошли все круги ада и всё‑таки победили систему. Спойлер: победили костылями.

habr.com/ru/articles/969790/

#android #kotlin #jetpack_compose #emoji #мобильная_разработка

2025-11-12

Рецензия на книгу “Основы JetPack Compose: Разработка приложений для Android”

За последние несколько лет Jetpack Compose стал не просто новым способом создания интерфейсов под Android, а фактически основным инструментом UI-разработки. Google активно развивает Compose как декларативный фреймворк, заменяющий устаревший XML-подход, а экосистема вокруг него — от Material Design 3 до Compose Multiplatform — превратилась в полноценную платформу для современной мобильной разработки. Теперь учебник по Jetpack Compose уровня монографии (около 700 стр.) доступен на русском языке. Перевод книги по версии 1.6 — удобная отправная точка для тех, кто делает первые шаги или развивает компетенции в Compose-разработке.

habr.com/ru/companies/ssp-soft

#jetpack_compose #книга_по_android #учебник_android #kotlin #compose #jetpack

2025-10-21

Google Регистрация в Android на kotlin + jetpack compose

🚀 Хотите создать регистрацию в стиле Google для своего Android-приложения? 🚀 Забудьте о скучных формах! Погрузитесь в мир плавной анимации, интуитивного дизайна и надежной безопасности – всё это с помощью Kotlin и Jetpack Compose. ✨ Что вас ждет: Пошаговый гайд: От первых строк кода до готового результата – разберемся вместе. Рабочий код: Не просто теория, а готовые решения для вашего проекта. Комментарии эксперта: Поймете каждый шаг и сможете адаптировать код под свои нужды. Секреты профессионалов: Узнаете, как сделать регистрацию не только функциональной, но и привлекательной. 💪 Не упустите шанс прокачать свое приложение! 💪

habr.com/ru/articles/958746/

#android_development #android #jetpack_compose #kotlin #google_api

2025-09-16

Как я научил Jetpack Compose показывать рекомпозиции в реальном времени

Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose. Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать. Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле». В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.

habr.com/ru/companies/yandex/a

#jetpack_compose #kotlin #рекомпозиция #best_practices #android #мобильная_разработка

2025-09-14

Делаем Jetpack Navigation 3 удобнее

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube и Telegram каналов Android Insights. Jetpack Navigation 3 дает полный контроль над навигацией через NavBackStack, но прямая работа с ним превращается в написание шаблонного кода и усложняет использование из ViewModel. В статье предлагается решение этих проблемы, добавляя привычный API с командами push() , pop() , replace() . Если вы работаете с Navigation 3 или планируете на неё переходить — эта статья поможет сделать процесс разработки приятнее.

habr.com/ru/articles/946878/

#android #kotlin #jetpack_compose #navigation3 #navigation #навигация #android_jetpack

2025-08-23

Тренажер французских числительных на Jetpack Compose

Те, кто учил французский, знают, как сложно освоиться в кругу их числительных. Во французском языке уживаются сразу две системы счисления - привычная нам десятеричная и кельтско-норманнская двадцатеричная. И хотя программиста не запугаешь даже 16-ричной, все-таки метаться между системами счисления в уме, когда ты уже стоишь у кассы и должен расплатиться, причем, по нынешним временам, наличными, - тот еще квест. Поэтому давайте доведем знание числительных до автоматизма.

habr.com/ru/articles/940032/

#корутины_kotlin #jetpack_compose #srs #spaced_repetition

2025-08-05

Swipe to Pay, или Как мы переписали слайдер оплаты на Compose

В Дринкит был анимированный компонент на MotionLayout — слайдер быстрой оплаты в меню. Его и сейчас можно увидеть, когда вы добавляете продукты в корзину. Проведя по нему, вы оплатите заказ, а тапнув — перейдёте к покупкам. Так почему «был»? У компонента накопилось немало багов, а самому слайдеру понадобился новый функционал. Реализовать его на MotionLayout было сложно, так что мы решили переписать компонент на Compose. Привет! Меня зовут Дима Максимов, я — Android-разработчик. В этой статье я расскажу, почему на Compose проще пилить масштабируемые компоненты, разобрав процесс во всех деталях, покажу код и его реализацию в интерфейсе.

habr.com/ru/companies/dododev/

#Compose #androidразработка #jetpack_compose #animations #mobile_development #custom_layout #слайдер #мобильное_приложение

2025-07-21

lateinit вместо nullable: пять ошибок

Привет, Хабр! Сегодня разберёмся, почему попытка «избавиться от ? любой ценой» приводит к проблемам, и как жить с этим вообще жить.

habr.com/ru/companies/otus/art

#kotlin #Android #Jetpack_Compose #Compose_анимации #UIанимации_Android #Kotlin_Flow #Архитектура_Androidприложений #viewmodel #hilt

2025-07-21

«Open Tracker: как разработать Android-приложение для автоматического трекинга коммерческих представителей. Часть 2»

Во второй части статьи рассматривается реализация пользовательского интерфейса Android-приложения Open Tracker для автоматического трекинга коммерческих представителей. Основное внимание уделено минималистичному дизайну, работе с системными разрешениями и механизму передачи данных между фоновым сервисом и UI. Описаны три ключевых экрана ( OverView , Log , Settings ), а также особенности их взаимодействия с ядром приложения. Статья будет полезна разработчикам, создающим аналогичные решения с использованием Jetpack Compose , StateFlow и современных архитектурных подходов.

habr.com/ru/articles/929484/

#jetpack_compose #android #kotlin #coroutines #location #flow #service #stateflow

2025-07-03

Эффекты в Jetpack Compose, лежащие на поверхности

Всем привет! Меня зовут Владимир, и я мобильный разработчик в компании «Финам». В своих проектах мы активно используем Jetpack Compose, в котором, несмотря на растущую популярность, получение некоторых визуальных эффектов до сих пор не так очевидно, как хотелось бы. В этой статье рассмотрен один из способов «наложения» различных эффектов рендеринга на уже готовый контент.

habr.com/ru/companies/finam_br

#jetpack_compose #android

2025-06-15

Я обогнал Google?

Заголовок "Я обогнал Google?" — не просто кликбейт. Столкнувшись с неудобствами и большим количеством бойлерплейта в Jetpack Navigation на реальном проекте, я задался вопросом: а можно ли сделать лучше? В этой статье я шаг за шагом показываю свой путь: от ручных extension-функций до создания собственной библиотеки на KSP, которая генерирует типобезопасные классы для навигации, упрощает передачу аргументов и добавляет удобные фичи.

habr.com/ru/articles/918562/

#jetpack_compose #android #kotlin #ksp #навигация #кодогенерация #safe_args

:rss: CyberAgent Developers Bldevelopers@rss-mstdn.studiofreesia.com
2025-06-11
2025-05-31

Индикация клика на стероидах в Compose: пишем свою IndicationNodeFactory

При работе с Jetpack Compose разработчики часто не замечают, как элементы Material и Material 3 дизайн систем вплетаются в их код. Один из таких элементов - это индикация клика, реализованная в Material как круги на воде (англ. ripple effect). В этой статье мы разберем, в чем недостатки дефолтной реализации риппл-эффекта в Compose и как сделать свою.

habr.com/ru/articles/914506/

#compose #compose_multiplatform #jetpack_compose #material_design #design_system

2025-05-27

Создание кастомного тултипа Jetpack Compose

Привет, Хабр! Меня зовут Альберт, я Android-разработчик в команде интеграции рассрочки в приложении Wildberries. В этой статье мы напишем простенькую реализацию тултипов на Jetpack Compose своими руками.

habr.com/ru/companies/wildberr

#tooltip #тултип #jetpack_compose #android #android_development #tutorial #туториал #tooltips #тултипы #kotlin

2025-05-24

Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping

За последнее время Jetpack Compose и его кроссплатформенный собрат Compose Multiplatform прошел большой путь от ранних альфа релизов и скептического отношения комьюнити до статуса главного UI-фреймфорка под Android и production-ready состояния на iOS. Тем не менее одна из важных тем, касающихся runtime-производительности фреймворка, все еще остается полной темных пятен, и это тема stability. Как ни странно, ведь на эту тему сделано множество статей и докладов. Проблема заключается в том, что стремительное развитие фреймворка очень быстро делает эти статьи, доклады и даже документацию устаревшими, а новые посты на эту тему вторят старым, дальше распространяя ложную информацию о том, как работает рекомпозиция, пропускаемость (skippability) и перезапускаемость (restartability). Использование LLM для получения актуальной информации не очень поможет. Простой пример - спросим у ChatGPT, будет ли перезапущена Composable функция, если она имеет нестабильные аргументы, и получим неправильный ответ:

habr.com/ru/articles/912490/

#kotlin_multiplatform #compose_multiplatform #jetpack_compose

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst