mastodon.world is one of the many independent Mastodon servers you can use to participate in the fediverse.
Generic Mastodon server for anyone to use.

Server stats:

8.1K
active users

#jetpack_compose

2 posts1 participant0 posts today
Habr<p>lateinit вместо nullable: пять ошибок</p><p>Привет, Хабр! Сегодня разберёмся, почему попытка «избавиться от ? любой ценой» приводит к проблемам, и как жить с этим вообще жить.</p><p><a href="https://habr.com/ru/companies/otus/articles/928980/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/otus/art</span><span class="invisible">icles/928980/</span></a></p><p><a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a> <a href="https://zhub.link/tags/Android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Android</span></a> <a href="https://zhub.link/tags/Jetpack_Compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Jetpack_Compose</span></a> <a href="https://zhub.link/tags/Compose_%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Compose_анимации</span></a> <a href="https://zhub.link/tags/UI%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_Android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UIанимации_Android</span></a> <a href="https://zhub.link/tags/Kotlin_Flow" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Kotlin_Flow</span></a> <a href="https://zhub.link/tags/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_Android%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Архитектура_Androidприложений</span></a> <a href="https://zhub.link/tags/viewmodel" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>viewmodel</span></a> <a href="https://zhub.link/tags/hilt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hilt</span></a></p>
Habr<p>«Open Tracker: как разработать Android-приложение для автоматического трекинга коммерческих представителей. Часть 2»</p><p>Во второй части статьи рассматривается реализация пользовательского интерфейса Android-приложения Open Tracker для автоматического трекинга коммерческих представителей. Основное внимание уделено минималистичному дизайну, работе с системными разрешениями и механизму передачи данных между фоновым сервисом и UI. Описаны три ключевых экрана ( OverView , Log , Settings ), а также особенности их взаимодействия с ядром приложения. Статья будет полезна разработчикам, создающим аналогичные решения с использованием Jetpack Compose , StateFlow и современных архитектурных подходов.</p><p><a href="https://habr.com/ru/articles/929484/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/929484/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a> <a href="https://zhub.link/tags/coroutines" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>coroutines</span></a> <a href="https://zhub.link/tags/location" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>location</span></a> <a href="https://zhub.link/tags/flow" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>flow</span></a> <a href="https://zhub.link/tags/service" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>service</span></a> <a href="https://zhub.link/tags/stateflow" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>stateflow</span></a></p>
Habr<p>Эффекты в Jetpack Compose, лежащие на поверхности</p><p>Всем привет! Меня зовут Владимир, и я мобильный разработчик в компании «Финам». В своих проектах мы активно используем Jetpack Compose, в котором, несмотря на растущую популярность, получение некоторых визуальных эффектов до сих пор не так очевидно, как хотелось бы. В этой статье рассмотрен один из способов «наложения» различных эффектов рендеринга на уже готовый контент.</p><p><a href="https://habr.com/ru/companies/finam_broker/articles/924802/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/finam_br</span><span class="invisible">oker/articles/924802/</span></a></p><p><a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a></p>
Habr<p>Я обогнал Google?</p><p>Заголовок "Я обогнал Google?" — не просто кликбейт. Столкнувшись с неудобствами и большим количеством бойлерплейта в Jetpack Navigation на реальном проекте, я задался вопросом: а можно ли сделать лучше? В этой статье я шаг за шагом показываю свой путь: от ручных extension-функций до создания собственной библиотеки на KSP, которая генерирует типобезопасные классы для навигации, упрощает передачу аргументов и добавляет удобные фичи.</p><p><a href="https://habr.com/ru/articles/918562/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/918562/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a> <a href="https://zhub.link/tags/ksp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ksp</span></a> <a href="https://zhub.link/tags/%D0%BD%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%86%D0%B8%D1%8F" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>навигация</span></a> <a href="https://zhub.link/tags/%D0%BA%D0%BE%D0%B4%D0%BE%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>кодогенерация</span></a> <a href="https://zhub.link/tags/safe_args" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>safe_args</span></a></p>
Habr<p>Индикация клика на стероидах в Compose: пишем свою IndicationNodeFactory</p><p>При работе с Jetpack Compose разработчики часто не замечают, как элементы Material и Material 3 дизайн систем вплетаются в их код. Один из таких элементов - это индикация клика, реализованная в Material как круги на воде (англ. ripple effect). В этой статье мы разберем, в чем недостатки дефолтной реализации риппл-эффекта в Compose и как сделать свою.</p><p><a href="https://habr.com/ru/articles/914506/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/914506/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose</span></a> <a href="https://zhub.link/tags/compose_multiplatform" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose_multiplatform</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/material_design" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>material_design</span></a> <a href="https://zhub.link/tags/design_system" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>design_system</span></a></p>
Habr<p>Создание кастомного тултипа Jetpack Compose</p><p>Привет, Хабр! Меня зовут Альберт, я Android-разработчик в команде интеграции рассрочки в приложении Wildberries. В этой статье мы напишем простенькую реализацию тултипов на Jetpack Compose своими руками.</p><p><a href="https://habr.com/ru/companies/wildberries/articles/905994/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/wildberr</span><span class="invisible">ies/articles/905994/</span></a></p><p><a href="https://zhub.link/tags/tooltip" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>tooltip</span></a> <a href="https://zhub.link/tags/%D1%82%D1%83%D0%BB%D1%82%D0%B8%D0%BF" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>тултип</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/android_development" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_development</span></a> <a href="https://zhub.link/tags/tutorial" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>tutorial</span></a> <a href="https://zhub.link/tags/%D1%82%D1%83%D1%82%D0%BE%D1%80%D0%B8%D0%B0%D0%BB" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>туториал</span></a> <a href="https://zhub.link/tags/tooltips" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>tooltips</span></a> <a href="https://zhub.link/tags/%D1%82%D1%83%D0%BB%D1%82%D0%B8%D0%BF%D1%8B" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>тултипы</span></a> <a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a></p>
Habr<p>Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping</p><p>За последнее время Jetpack Compose и его кроссплатформенный собрат Compose Multiplatform прошел большой путь от ранних альфа релизов и скептического отношения комьюнити до статуса главного UI-фреймфорка под Android и production-ready состояния на iOS. Тем не менее одна из важных тем, касающихся runtime-производительности фреймворка, все еще остается полной темных пятен, и это тема stability. Как ни странно, ведь на эту тему сделано множество статей и докладов. Проблема заключается в том, что стремительное развитие фреймворка очень быстро делает эти статьи, доклады и даже документацию устаревшими, а новые посты на эту тему вторят старым, дальше распространяя ложную информацию о том, как работает рекомпозиция, пропускаемость (skippability) и перезапускаемость (restartability). Использование LLM для получения актуальной информации не очень поможет. Простой пример - спросим у ChatGPT, будет ли перезапущена Composable функция, если она имеет нестабильные аргументы, и получим неправильный ответ:</p><p><a href="https://habr.com/ru/articles/912490/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/912490/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/kotlin_multiplatform" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin_multiplatform</span></a> <a href="https://zhub.link/tags/compose_multiplatform" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose_multiplatform</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a></p>
Habr<p>Google I/O 2025. Что нового в Android</p><p>Всем привет! С вами Анна Жаркова, руководитель практики по мобильному направлению из компании Usetech. Прошли 2 дня Google I/O и живых сессий и воркшопов, новинки уже представлены, не все туториалы и плейлисты еще не выложены, но у нас уже есть, что обсудить. Поговорим мы не с AI, хотя про него сегодня тоже будет, а об Android. Все аспекты мы затронуть не сможем, все-таки информации было очень много, а по каждой из новинке можно писать и отдельную статью, и даже доклад. Поэтому рассмотрим наиболее яркие моменты.</p><p><a href="https://habr.com/ru/companies/usetech/articles/911722/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/usetech/</span><span class="invisible">articles/911722/</span></a></p><p><a href="https://zhub.link/tags/google_io" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>google_io</span></a> <a href="https://zhub.link/tags/google_io_2025" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>google_io_2025</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose</span></a> <a href="https://zhub.link/tags/kotlin_multiplatform" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin_multiplatform</span></a> <a href="https://zhub.link/tags/gemini" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gemini</span></a> <a href="https://zhub.link/tags/ai" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ai</span></a></p>
Habr<p>Типобезопасная передача результатов между экранами в Compose с Jetpack Navigation</p><p>Приветствую Android-комьюнити! Меня зовут Арсений Шпилевой, я Core-разработчик в команде WB Partners . В этой небольшой статье я расскажу, как мы в проекте решили обеспечить типобезопасность при передаче возвращаемых результатов между родительским и дочерним экранами с применением библиотеки Compose Navigation . Мы рассмотрим механизм, который помогает избежать типичных ошибок и делает код более поддерживаемым.</p><p><a href="https://habr.com/ru/companies/wildberries/articles/905238/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/wildberr</span><span class="invisible">ies/articles/905238/</span></a></p><p><a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/jetpack_navigation" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_navigation</span></a> <a href="https://zhub.link/tags/%D0%BD%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%86%D0%B8%D1%8F" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>навигация</span></a> <a href="https://zhub.link/tags/%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>мобильная_разработка</span></a> <a href="https://zhub.link/tags/wildberries" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>wildberries</span></a></p>
Habr<p>Мастерство фокусов на Compose 2: как работает запрос фокуса</p><p>Привет! Меня зовут Костя, я Android-разработчик в онлайн-кинотеатре PREMIER. В процессе работы над проектом PREMIER для AndroidTV я столкнулся с тем, что в Jetpack Compose механизм фокусов — достаточно сложная и неочевидная тема. А информации в интернете об этом очень мало, особенно о специфичных сценариев вроде ТВ-приложений или устройств без сенсорного ввода. Поэтому я решил разобрать тему фокусов в Compose максимально подробно, чтобы помочь разработчикам лучше понять этот механизм и избежать типичных ошибок. В первой статье на эту тему мы уже разобрали базовую структуру фокусировки в Compose. Теперь пришло время углубиться в технические детали: что именно происходит, когда вызывается requestFocus() , как Compose выбирает элемент для фокусировки и какие изменения были внесены в Compose 1.8, чтобы улучшить этот процесс. Если вы работаете с приложениями под Android TV, кастомными компонентами или просто хотите лучше понимать, как работает система фокусов, эта статья для вас.</p><p><a href="https://habr.com/ru/companies/habr_rutube/articles/902306/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/habr_rut</span><span class="invisible">ube/articles/902306/</span></a></p><p><a href="https://zhub.link/tags/android_tv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_tv</span></a> <a href="https://zhub.link/tags/androidtv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>androidtv</span></a> <a href="https://zhub.link/tags/compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/focus" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>focus</span></a> <a href="https://zhub.link/tags/android_development" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_development</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a></p>
Habr<p>ML KIT — Современное решение для сканирования в Android приложениях</p><p>ML Kit - это мощный инструмент для работы с камерой в андроид приложениях. Библиотека от компании Google ML Kit предлагает набор встроенных API, которые могут работать как на самом девайсе, так и в облаке. ML Kit - это мощный инструмент для работы с камерой в Android и IOS приложениях.</p><p><a href="https://habr.com/ru/articles/908772/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/908772/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/Android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Android</span></a> <a href="https://zhub.link/tags/MLKIT" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>MLKIT</span></a> <a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/android_studio" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_studio</span></a></p>
Habr<p>Мастерство фокусов на Compose</p><p>Привет! Меня зовут Костя, я Android-разработчик в онлайн-кинотеатре PREMIER. Среди прочего у нас есть приложение для Android TV. Работая над ним, я столкнулся с тем, что система фокусов в Jetpack Compose устроена сложнее, чем кажется на первый взгляд. Поскольку для ТВ-приложений и устройств без сенсорного управления работа с фокусом играет ключевую роль в навигации, мне понадобилось детально разобраться в теме. Результатами делюсь в статье.</p><p><a href="https://habr.com/ru/companies/habr_rutube/articles/902310/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/habr_rut</span><span class="invisible">ube/articles/902310/</span></a></p><p><a href="https://zhub.link/tags/android_tv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_tv</span></a> <a href="https://zhub.link/tags/androidtv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>androidtv</span></a> <a href="https://zhub.link/tags/compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/focus" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>focus</span></a> <a href="https://zhub.link/tags/android_development" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_development</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a></p>
Habr<p>Jetpack Compose для Android TV: как происходит перемещение фокуса</p><p>Привет, Хабр! Меня зовут Сергей Захаров, я разработчик в онлайн-кинотеатре KION. Jetpack Compose постепенно становится стандартом разработки UI для Android, и Android TV не остался в стороне. Вместо устаревшего и громоздкого Leanback теперь есть гибкий и мощный фреймворк, который обещает упростить разработку. Однако на Android TV ключевую роль играет управление фокусом — без него невозможна навигация. Как же Compose справляется с этой задачей? Достаточно ли он удобен для больших TV-проектов, или лучше ограничиться им в мобильных приложениях? В этом и следующих материалах я отвечу на эти вопросы на примере конкретных кейсов. Это первый пост моего цикла про работу с фокусом в Jetpack Compose. В нем я расскажу, как в Jetpack Compose перемещается фокус, рассмотрю используемые при этом компоненты, покажу их плюсы и минусы, а также дам рекомендации по их применению в приложениях для Android TV.</p><p><a href="https://habr.com/ru/companies/ru_mts/articles/901492/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/ru_mts/a</span><span class="invisible">rticles/901492/</span></a></p><p><a href="https://zhub.link/tags/androidtv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>androidtv</span></a> <a href="https://zhub.link/tags/Jetpack_Compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Jetpack_Compose</span></a> <a href="https://zhub.link/tags/%D0%B4%D0%B5%D0%BA%D0%BB%D0%B0%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>декларативное_программирование</span></a> <a href="https://zhub.link/tags/FocusManager" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FocusManager</span></a> <a href="https://zhub.link/tags/FocusRequester" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FocusRequester</span></a> <a href="https://zhub.link/tags/findFocusTarget" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>findFocusTarget</span></a> <a href="https://zhub.link/tags/%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>мобильные_приложения</span></a> <a href="https://zhub.link/tags/%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B4_android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>разработка_под_android</span></a> <a href="https://zhub.link/tags/%D0%A4%D0%BE%D0%BA%D1%83%D1%81_%D0%B2_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D1%85" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Фокус_в_мобильных_приложениях</span></a> <a href="https://zhub.link/tags/%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>дизайн_мобильных_приложений</span></a></p>
Habr<p>Сколько я заработал в RuStore и как Роскомнадзор продвигал мое приложение</p><p>В этой статье я поделюсь своей историей: как я в одиночку пробивался в отечественном магазине приложений, сколько заработал и как странным образом Роскомнадзор оказался моим союзником в продвижении стартапа. Читай дальше — сейчас всё расскажу!</p><p><a href="https://habr.com/ru/articles/904226/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/904226/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/rustore" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>rustore</span></a> <a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a> <a href="https://zhub.link/tags/%D1%81%D1%82%D0%B0%D1%80%D1%82%D0%B0%D0%BF" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>стартап</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>яндекс</span></a> <a href="https://zhub.link/tags/%D1%80%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>реклама</span></a> <a href="https://zhub.link/tags/%D0%BC%D0%BE%D0%BD%D0%B5%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>монетизация_приложений</span></a> <a href="https://zhub.link/tags/%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>разработка_мобильных_приложений</span></a></p>
Habr<p>Часть 2: XML или Compose — что выбрать, и что нужно знать перед выбором</p><p>Автор: Android-разработчик с 7+ годами опыта, знающий толк в FrameLayout, merge, include, RecyclerView, а теперь и Modifier.padding.</p><p><a href="https://habr.com/ru/articles/902252/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/902252/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/kotlin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin</span></a> <a href="https://zhub.link/tags/ui" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ui</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/xml" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>xml</span></a> <a href="https://zhub.link/tags/view" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>view</span></a></p>
Habr<p>Сканирование баркодов c помощью камеры и внешних устройств в Compose</p><p>В этой статье рассмотрим, как сканировать баркоды в Android - приложениях, а также как в Compose работать с камерой (предпросмотр и логика сканирования), а также и как поддерживать внешние сканеры.</p><p><a href="https://habr.com/ru/companies/sberbank/articles/901630/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/sberbank</span><span class="invisible">/articles/901630/</span></a></p><p><a href="https://zhub.link/tags/Android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Android</span></a> <a href="https://zhub.link/tags/Camerax" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Camerax</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a></p>
Habr<p>XML vs Compose, не можете решить?</p><p>Jetpack Compose — не просто “альтернатива XML”. Это совершенно другой парадигмальный сдвиг в том, как Android отрисовывает и управляет UI. Но чтобы по-настоящему понять, чем Compose отличается от привычного XML, давайте посмотрим, что происходит под капотом в каждом случае.</p><p><a href="https://habr.com/ru/articles/901096/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/901096/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/xml" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>xml</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/software_development" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>software_development</span></a></p>
Habr<p>У нас в проекте был Compose Multiplatform, но снова я бы так не делал</p><p>Мобильная разработка продолжает развиваться, но, если честно, никаких революционных прорывов в последнее время не произошло. Громкие темы, вроде Kotlin Multiplatform (KMP), Flutter, Jetpack Compose, SwiftUI, уже давно закрепились в индустрии, а новинки больше эволюционируют, чем меняют правила игры. Компании экспериментируют с кроссплатформенными решениями, и это выглядит логично. Писать общий код для iOS и Android 一 это экономия ресурсов и времени. Вроде бы верно, но на практике всё не так гладко. Привет, меня зовут Максим Плахута и с недавнего времени я руковожу Android разработкой «Кинопоиска». До этого руководил мобильной разработкой Почты Яндекс. А ещё я участник ПК новой конференции по мобильной разработке Apps Conf . Расскажу, какие шишки набили в реализации кроссплатформенного проекта и чего лучше не делать в современной мобильной разработке.</p><p><a href="https://habr.com/ru/companies/oleg-bunin/articles/899096/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/oleg-bun</span><span class="invisible">in/articles/899096/</span></a></p><p><a href="https://zhub.link/tags/kotlin_multiplatform" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kotlin_multiplatform</span></a> <a href="https://zhub.link/tags/flutter" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>flutter</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/swiftui" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>swiftui</span></a> <a href="https://zhub.link/tags/%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>потоковая_передача_данных</span></a> <a href="https://zhub.link/tags/api" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>api</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/ios" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ios</span></a> <a href="https://zhub.link/tags/ui_ux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ui_ux</span></a> <a href="https://zhub.link/tags/%D0%BA%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>кроссплатформенность</span></a></p>
Habr<p>Как работать с Custom Layout в Jetpack Compose</p><p>Всем привет! Я Александр Власюк, старший Android-инженер в Авито , разрабатываю Авито Кошелек и веду телеграм-канал «​​Записки инженера» . В этой статье вспоминаем, как лейауты работают в Compose, обсуждаем изменение лейаута отдельного компонента, смотрим, как создавать кастомные Layout и LazyLayout и учимся откладывать композицию. И всё это на примерах, в том числе из дизайн-системы Авито.</p><p><a href="https://habr.com/ru/companies/avito/articles/894432/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/avito/ar</span><span class="invisible">ticles/894432/</span></a></p><p><a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>compose</span></a> <a href="https://zhub.link/tags/layout" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>layout</span></a> <a href="https://zhub.link/tags/android_sdk" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_sdk</span></a></p>
Habr<p>Kelp — IDE-плагин для кастомных дизайн-систем на Jetpack Compose</p><p>Kelp — мощный плагин для Android Studio, разработанный для улучшения поддержки кастомных дизайн-систем на Jetpack Compose в Android Studio. Основные фичи: 🔧 Настраиваемые иконки для компонентных функций 🎨 Иконки дизайн-системы 🌈 Предпросмотр цветов 📱 Интеграция демоприложения (автоматическое скачивание и установка APK-файла и deeplinking на страницу компонента) 🖼️ Рендеринг изображений в KDoc ⌨️ Шаблоны кода (Live Templates) И 🐘 Gradle Plugin, скачивающий демоприложение и проверяющий наличие IDE-плагина.</p><p><a href="https://habr.com/ru/companies/ozontech/articles/847376/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/ozontech</span><span class="invisible">/articles/847376/</span></a></p><p><a href="https://zhub.link/tags/android_studio" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android_studio</span></a> <a href="https://zhub.link/tags/ide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ide</span></a> <a href="https://zhub.link/tags/jetpack_compose" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jetpack_compose</span></a> <a href="https://zhub.link/tags/%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>дизайн_система</span></a> <a href="https://zhub.link/tags/%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>дизайнсистема</span></a> <a href="https://zhub.link/tags/designsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>designsystem</span></a> <a href="https://zhub.link/tags/intellij_idea_plugin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>intellij_idea_plugin</span></a> <a href="https://zhub.link/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://zhub.link/tags/showcase" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>showcase</span></a></p>