Подготовка Android-ассетов: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi

Графика в релизе ломается там, где наборы ассетов собирали вручную: где-то размытие на крупных экранах, где-то лишний вес сборки. Мы разрабатываем под ключ — инвентаризируем графику, готовим плотности и регламент передачи, чтобы команда больше не возвращалась к нарезке. Сроки на подготовку наборов сокращаются в разы.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Подготовка Android-ассетов: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi
Простой
от 4 часов до 2 дней
Часто задаваемые вопросы

Подготовка ассетов Android: где ломается графика в релизе

Самая частая поломка в релизе — один мастер из макета, растянутый системой под конкретный экран. Разработчик кладёт картинку в единственную папку, и на крупном флагмане или планшете иконка приходит размытой: система интерполирует растр вверх. Обратная ситуация — в проект сложили файл под каждый класс плотности, и вес сборки приложения вырос в разы без единого нового экрана.

Android выбирает ресурс по классу плотности — от mdpi до xxxhdpi — и при промахе берёт ближайший и масштабирует. Отсюда и расхождения между макетом и тем, что видит пользователь: сдвинутые отступы, обрезанные края, другая толщина обводки. Адаптивная иконка android добавляет свой слой проблем: передний и задний планы лежат отдельно, и логотип вне безопасной зоны срезается маской лаунчера на части устройств.

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

Разбираем, как закрывается подготовка ассетов Android: какие проверки ставим на макеты до вёрстки, как настраиваем генерацию из мастер-файла и куда смотрим, когда макет расходится с реальным экраном.

Что даёт управляемый набор ассетов мобильному приложению

Плотности экранов кратны базовой: mdpi, hdpi, xhdpi, xxhdpi и xxxhdpi — это шаг 1×, 1.5×, 2×, 3× и 4×. Графика собирается один раз по этим коэффициентам, поэтому на любом устройстве иконка, иллюстрация и фон попадают в свой слот без интерполяции на стороне системы — изображение остаётся резким, а пропорции и отступы не разъезжаются. Общий источник истины для палитры, скруглений и толщины линий держит единый стиль интерфейса; ту же логику масштабирования описывает Material Design.

Разница проявляется в артефактах сборки. Растровая иконка, разложенная по пяти каталогам, весит ровно в пять раз больше одной копии — этот вес уходит в вес apk и aab, а вместе с ним растёт время сборки релиза и размер обновления, которое скачивает пользователь. Отдельно считаем долю отказов установки: чем крупнее пакет, тем чаще прерывается загрузка на слабой связи.

Оптимизация графики приложения начинается с отказа от растра там, где нет фото и градиентов: векторные иконки, растягиваемые фоны под разный контент, современный формат сжатия для фотоматериалов. Сжатие изображений без потери качества проверяем сравнением с эталоном на контрольных экранах, а не «на глаз», и только после этого закрепляем коэффициент в правилах сборки.

Правки оформления стоят одной правки исходника, а не синхронного обновления пяти копий: макет меняется быстрее, релиз собирается предсказуемее, визуальная проверка сводится к нескольким эталонным разрешениям.

Способы работы с графикой: варианты и ограничения

На Android ресурс подбирается под плотность экрана: система сама берёт подходящую копию, и от того, какие варианты мы положили, зависит резкость иконки на плотном экране и вес сборки на остальных. Ошибка видна пользователю сразу — «мыло» на кнопках или приложение, которое растёт быстрее, чем его функциональность.

Универсального способа нет: фото живёт только в растре, иконки выгоднее держать вектором, массовые элементы дешевле нарезать автоматически. Ниже варианты, между которыми реально выбирают.

Вариант Когда подходит Ограничения
Векторная графика в приложении иконки, схемы, простые иллюстрации не тянет фото и сложные текстуры, тяжёлые сцены нагружают отрисовку
Растровые наборы (mdpi–xxxhdpi) фотоконтент, детальные иллюстрации пять копий на ресурс, вес сборки растёт, копии расходятся при правках
Автоматическая нарезка изображений серии однотипных иконок из мастер-макета нужен аккуратный исходник, на мелких плотностях видны артефакты уменьшения
Ручная подготовка макетов ключевые экраны с пиксельной точностью дорого по времени, тяжело сопровождать при редизайне
Адаптивная вёрстка ресурсов разные экраны, вырезы, тёмная тема сложнее конфигурация, нужна проверка на реальных устройствах

На практике подходы комбинируют: вектор — для интерфейса, растр — для контента, автоматизация — для массовых наборов. Мы задаём правило по умолчанию для проекта и проверяем результат на матрице экранов, чтобы резкость и вес не расходились с ожиданиями дизайна.

Этапы внедрения: от инвентаризации до передачи команде

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

  1. Аудит графических ресурсов. Сверяем макеты с тем, что реально лежит в проекте: находим дубли, растянутые растровые копии, иконки, нарисованные под одну плотность, и картинки в общем каталоге без разбивки.
  2. Схема нарезки ресурсов. Определяем набор плотностных каталогов (от mdpi до xxxhdpi), правила именования и то, что отдаётся вектором, а что растром — вектор закрывает масштабирование и убирает лишние копии.
  3. Настройка сборки ресурсов. Подключаем автоматическую генерацию наборов из мастер-файлов: новая иконка больше не появляется вручную в пяти каталогах и не теряется при слиянии веток.
  4. Оптимизация веса. Пережимаем растры, убираем неиспользуемые файлы и следим, чтобы размер поставки не рос с каждой итерацией дизайна.
  5. Проверка на устройствах. Прогоняем ключевые экраны на аппаратах с разной плотностью и диагональю: смотрим обрезку, размытие, артефакты масштабирования и время установки сборки.
  6. Передача документации. Отдаём команде карту ресурсов, правила именования, конфигурацию сборки и регламент добавления новой графики — обновление перестаёт быть ручной операцией.

Наборы графики, правила нарезки и регламенты передачи

Готовый комплект графики — это не папка с картинками, а структура, которую сторонняя команда разворачивает без переписки и уточнений. Передаём её вместе с правилами: что где лежит, как называется каждый файл и что делать, когда макет обновился. Ниже — перечень артефактов, которые заказчик получает на руки.

  • Структура каталогов ресурсов: наборы разложены по плотностям — от mdpi до xxxhdpi, отдельно общие и тематические группы. Новая графика ложится в свою ветку, а не расползается по корню проекта.
  • Правила именования файлов: только латиница, нижний регистр, префикс по экрану и суффикс по плотности и состоянию — обычное, нажатое, недоступное. Имя файла само объясняет назначение, без захода в макет.
  • Карта ресурсов: таблица «элемент интерфейса → файл → где используется». По ней любой элемент находится за минуту, а не поиском по всему каталогу.
  • Векторные и тянущиеся элементы: иконки и фоны отдаём в редактируемом виде, растровые копии остаются только там, где нужна фактура. Это снимает пересборку под новые разрешения.
  • Регламент обновления графики: кто инициирует пересборку, какие плотности пересобираются, как проверяется, что устаревшие наборы удалены, а не лежат рядом с новыми.
  • Документация по ресурсам: назначение комплекта, лимиты по числу и массе файлов на экран — сборка перестаёт расти от релиза к релизу.
  • Исходники и мастер-файлы: слои, направляющие, текст без растеризации. Любая правка делается по мастеру, без потери качества и повторной отрисовки.

До передачи комплект проходит приёмку по этому же списку: проверяем, что каждый элемент из макета имеет файл во всех плотностях и что имена совпадают с документацией. Опишите задачу — вернёмся с оценкой и планом подготовки графики под ваш релизный цикл.

Кейс: убрали размытие на крупных экранах и лишний вес

Перед нами был интерфейс, который на планшетах и крупных флагманах выглядел откровенно мягким: под графику лежал один набор растровых картинок, и система растягивала его до нужной плотности уже в момент отрисовки. Параллельно каждый экран тянул собственные полноразмерные файлы, часть из которых не использовалась вообще.

Что сделали

  • Разложили графику по пяти наборам плотности — mdpi, hdpi, xhdpi, xxhdpi и xxxhdpi, — чтобы система брала готовый файл нужного масштаба, а не считала его на ходу.
  • Иконки, индикаторы и линейные элементы перевели в вектор: они перестали зависеть от плотности экрана совсем.
  • Растягиваемые фоны и кнопки собрали в девятисегментные картинки — вместо десятка отдельных изображений под каждое состояние.
  • Прописали правила экспорта прямо в макетах Figma, чтобы новые экраны не возвращали проблему.
  • Вычистили дубли и неиспользуемые файлы, оставив на каждый логический ресурс ровно один исходник.

Результат

Вес приложения упал с 68 до 41 МБ — почти на 40%, хотя наборов графики стало больше. Размытие на крупных экранах ушло полностью: масштабирование из растра больше не выполняется. Сборка ресурсов перестала быть самой долгой частью релиза, а дизайнеры отдают макет по одному набору правил вместо переписки с разработкой.

Чем векторная графика отличается от растровой в проекте

Растр хранит готовые пиксели, вектор — геометрию и правила её отрисовки. Пока изображение выводится в исходном размере, разницы не видно, но при масштабировании графики растр интерполируется и контуры теряют резкость, а вектор пересчитывается под нужную плотность экрана.

Для Android выбор формата — это всегда компромисс между резкостью на разных экранах и весом приложения:

Вариант Когда подходит Ограничения
Вектор Иконки, элементы интерфейса, простые иллюстрации Плохо переносит сложные градиенты, тени и текстуры — графику приходится упрощать
Растровый WebP Фотографии, сложные иллюстрации, текстурные фоны Теряет резкость при увеличении, вес растёт вместе с размером
PNG с набором копий под плотности Скриншоты, графика с прозрачностью и точной пиксельной привязкой Одно изображение — это несколько файлов: растёт репозиторий и время сборки

Правило простое: иконки и иллюстрации уходят в вектор, фотоматериал и текстуры остаются растром. Смешение форматов вслепую даёт либо размытые элементы на крупных экранах, либо лишние сотни килобайт в сборке на каждый размер.

Мы фиксируем это правило в регламенте проекта и проверяем на этапе сборки: лишние растровые копии не попадают в приложение, а иконки не разрастаются в несколько файлов на каждую плотность.

Технические сомнения, которые стоит снять до старта

До старта разработки заказчик задаёт один и тот же набор вопросов: что будет с графикой на разных телефонах, можно ли поправить оформление, не выпуская новую версию, и как быть, если исходных макетов не осталось. Пересмотра архитектуры ни один из них не требует, но каждый влияет на объём подготовки ассетов и на сроки. Ниже — короткие ответы, чтобы снять сомнения до оценки.

Хватит ли одного набора графики на все экраны?

Нет. Система растянет картинку под нужную плотность, но на плотных матрицах это даст размытые края, а на бюджетных моделях — лишний вес сборки. Поэтому собираем наборы под пять диапазонов плотности, от базового до самого высокого: иконки и фоны остаются резкими, а установочный файл не растёт без пользы.

Можно ли поменять графику, не выпуская новую версию?

Часть оформления — да: баннеры, промо-блоки и сезонные подборки выносим в удалённый набор ресурсов, он меняется на стороне сервера. Иконка, экран запуска и элементы навигации остаются внутри сборки. Перечень того и другого фиксируем до старта, чтобы потом не выяснилось, что нужный блок нельзя обновить без публикации.

У нас нет исходных макетов — только скриншоты

Логотип переводим в вектор, крупные элементы масштабируем, мелкие детали и полупрозрачные слои перерисовываем по сетке. Объём такой работы зависит от того, что сохранилось, — оцениваем его после просмотра материалов.

Тёмная тема — это второй комплект графики?

Нет, если цвета собраны на семантических токенах: один набор изображений перекрашивается палитрой, векторные иконки переиспользуются без правок. Переключение между темами работает без перерисовки и мерцания при смене системной настройки.

Обсудим задачу: что прислать для оценки объёма работ

Плотности экранов — главный источник неочевидного объёма: одна иконка превращается в пять наборов, а иллюстрация в баннере — в отдельную экспортную ветку. Чтобы оценка объёма работ опиралась на факты, а не на догадки, нужны исходники и перечень экранов, где эти ассеты живут. Ниже — минимальный набор входных данных; по нему мы считаем трудозатраты и возвращаемся с планом работ по графике.

  • Исходники в векторе или слоях: мастер-файлы иконок, логотипов, иллюстраций — с раздельными слоями, а не «сплющенными» копиями.
  • Перечень плотностей: нужны ли mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi полностью или где-то достаточно двух-трёх наборов.
  • Список экранов и состояний: где ассет появляется, в каком размере, с какими вариантами — нажатие, выключено, загрузка, ошибка.
  • Иконка приложения и системные элементы: основной значок, адаптивный и круглый варианты, фон с передним слоем, картинка для магазина.
  • Требования к форматам: прозрачность, WebP или PNG, допустимый вес файла и потеря качества при сжатии.
  • Тёмная тема, дополнительные темы оформления и языковые версии — если макетов больше одной.
  • Референсы и дизайн-система: палитра, сетка, отступы, уже собранные экспорты — чтобы не пересобирать то, что работает.

Для обсуждения задачи достаточно описать продукт и прислать то, что уже есть. Пробелы в списке не блокируют оценку — недостающие входные данные мы уточняем вопросами и выносим отдельным пунктом в план работ.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1009
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    902
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1331
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1179
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1106
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    713