Підготовка графічних ассетів під Android (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)
Система щільностей пікселів Android — один з ключових джерел візуальних артефактів у готових застосунках. Розмиті іконки на флагманах, пікселевані края на бюджетних телефонах, неправильні розміри в різних папках — все це наслідок неправильної підготовки ассетів.
Щільності та коефіцієнти
Android ділить екрани на density buckets з базовим коефіцієнтом mdpi = 1×:
| Щільність | Коефіцієнт | Типові пристрої |
|---|---|---|
| mdpi | 1× (160 dpi) | Старі бюджетні пристрої |
| hdpi | 1.5× (240 dpi) | Бюджетний сегмент |
| xhdpi | 2× (320 dpi) | Середній клас |
| xxhdpi | 3× (480 dpi) | Більшість флагманів |
| xxxhdpi | 4× (640 dpi) | Pixel 8 Pro, Galaxy S24 Ultra |
Базовий розмір у dp вказується один раз. Фізичний піксель на xxhdpi = dp × 3. Іконка 24dp = 24px в mdpi, 48px в hdpi, 72px в xhdpi, 96px в xxhdpi, 128px в xxxhdpi.
Векторні vs растрові ассети
Прості іконки, пікторами, UI-елементи без фотографічних деталей — завжди VectorDrawable (SVG-подібний XML формат Android). Один файл, будь-яка щільність, немає розмиття. Обмеження: не підтримує складні ефекти (blur, деякі типи градієнтів), анімовані ілюстрації потребують AnimatedVectorDrawable або Lottie.
Для PNG-ассетів (фотографії, складні ілюстрації, рекламні баннери) готуємо для кожної density окремо. Правило: рисуємо в xxxhdpi (4×), масштабуємо вниз. Масштабування вверх завжди дає втрату якості.
Типові помилки при експорті
Нечіткі границі на xhdpi/xxhdpi. Дизайнер рисує іконку 24×24px та експортує прямо без урахування щільностей. На xxhdpi система масштабує 24px до 72px білінійною інтерполяцією — розмито. Рішення: рисувати у розмірі для найбільшої щільності.
Неправильна папка mipmap vs drawable. Іконки лаунчера — в mipmap-*. Всі інші ассети — в drawable-*. Система обробляє mipmap інакше при масштабуванні. Покласти App Icon в drawable — іконка буде правильно відображатися, але втратить оптимізацію для launcher.
Лишні папки. Немає сенсу робити ldpi (0.75×) — пристрої з такою щільністю практично не зустрічаються з 2014 року. xxxhdpi охоплює всі поточні флагмани. Якщо проект не підтримує пристрої старше 2016 року, mdpi також можна опустити.
Імена файлів. Імена ресурсів в Android — тільки строчні букви, цифри та підкреслення. ic_Arrow_Right.png викликає помилку компіляції. ic_arrow_right.png — правильно.
Процес підготовки
- Отримуємо від дизайнера SVG або PDF (векторний джерело)
- Прості іконки → конвертуємо в
VectorDrawableчерез Android Studio (File → New → Vector Asset → Local SVG) - Растрові ассети → експортуємо з Figma з множителями 1×, 1.5×, 2×, 3×, 4× в відповідні папки
- Перевіряємо імена на відповідність naming convention
- Оптимізуємо PNG через
pngquantабоoptipngдля зменшення розміру APK
Що входить у роботу
- Аудит поточних ассетів (якщо є)
- Конвертація іконок в VectorDrawable
- Експорт растрових ассетів в 5 щільностей
- Правильна структура папок mipmap та drawable
- Оптимізація розміру файлів
- Готовий набір для вставки в Android Studio / передачі розробнику
Строки
4 години — 2 дні залежно від кількості ассетів та необхідності конвертації у векторний формат. Вартість розраховується індивідуально.







