Android заставка размеры изображения, чтобы соответствовать всем устройствам


у меня есть полноэкранный PNG, который я хочу отобразить на splash. Только одна ошибка там, и я понятия не имею какой размер поместить в каждую папку для рисования (ldpi,mdpi,hdpi и xhdpi). Мое приложение должно работать хорошо и красиво на всех телефонах и планшетах. Какие размеры (в пикселях) я должен создать, чтобы всплеск отображался хорошо на всех экранах?

9 196

9 ответов:

отказ от ответственности

этот ответ с 2013 года и серьезно устарели. На Android 3.2 теперь есть 6 групп плотности экрана. Этот ответ будет обновлен, как только я смогу, но без ETA. Обратитесь к официальная документация для всех плотностей на данный момент (хотя информацию о конкретных размерах пикселей, как всегда, трудно найти).

вот версия tl / dr

  • создать 4 картинки для каждого экрана плотность:

    • xlarge (xhdpi): 640x960
    • большой (hdpi): 480x800
    • средний (mdpi): 320x480
    • малый (ldpi): 240x320
  • читать 9-патч изображения введение в руководстве для разработчиков Android

  • дизайн изображений, которые имеют области, которые могут быть безопасно растянуты без ущерба для конечного результата

при этом Android выберет соответствующий файл для плотности изображения устройства, то он будет растягивать изображение в соответствии со стандартом 9-патч.

конец Тл;др. Полный пост впереди

я отвечаю в отношении проектного аспекта вопроса. Я не разработчик, поэтому я не смогу предоставить код для реализации многих из предлагаемых решений. Увы, мое намерение-помочь дизайнерам, которые так же потеряны, как и я, когда я помогал разрабатывать свое первое приложение для Android.

сторона все размеры

С Android компании могут разрабатывать свои мобильные телефоны и таблицы практически любого размера, с почти любым разрешением, которое они хотят. Из-за этого нет" правильного размера изображения " для экрана-заставки, так как нет фиксированных разрешений экрана. Это создает проблему для людей, которые хотят реализовать заставку.

действительно ли ваши пользователи хотят видеть заставку?

(на стороне Примечание, заставки несколько обескуражены среди удобства использования ребята. Утверждается, что пользователь уже знает, какое приложение он нажал, и брендировать свое изображение с помощью заставки не нужно, так как это только прерывает пользовательский опыт с "рекламой". Он должен использоваться, однако, в приложениях, которые требуют некоторой значительной загрузки при инициализации (5s+), в том числе игр и таких, так что пользователь не застрял интересно, если приложение разбилось или нет)

плотность экрана; 4 классы

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

  1. низкая плотность (ldpi ~ 120dpi)
  2. средняя плотность (mdpi ~ 160dpi)
  3. высокая плотность (hdpi ~ 240dpi)
  4. Экстренн-высокая плотность (xhdpi ~ 320dpi) (Эти значения dpi являются приближениями, так как пользовательские встроенные устройства будут имеют различные значения DPI)

что вам (если вы дизайнер) нужно знать из этого, что Android в основном выбирает из 4 изображений для отображения, в зависимости от устройства. Таким образом, вы в основном должны проектировать 4 разных изображения (хотя больше может быть разработано для разных форматов, таких как широкоэкранный, портретный/ландшафтный режим и т. д.).

С учетом этого знайте следующее: Если вы не создадите экран для каждого разрешения, используемого в Android, ваше изображение будет растягиваться чтобы соответствовать размеру экрана. И если ваше изображение не является в основном градиентом или размытием, вы получите некоторые нежелательные искажения при растяжении. Таким образом, у вас есть в основном два варианта: создать изображение для каждой комбинации размера/плотности экрана или создать четыре 9-патч изображения.

самое сложное решение-создать другой экран-заставку для каждого отдельного разрешения. Вы можете начать, следуя резолюции в таблице в конце на этой странице (есть еще. Пример: 960 х 720 это не указан там). И предполагая, что у вас есть некоторые мелкие детали в изображении, такие как небольшой текст, вы должны создать более одного экрана для каждого разрешения. Например, изображение 480x800, отображаемое на среднем экране, может выглядеть нормально, но на меньшем экране (с более высокой плотностью/dpi) логотип может стать слишком маленьким или какой-то текст может стать нечитаемым.

9-патч изображения

другое решение-это создать 9-патч изображения. Это в основном 1-pixel-transparent-граница вокруг вашего изображения, и путем рисования черных пикселей в верхней и левой области этой границы вы можете определить, какие части вашего изображения будет разрешено растягивать. Я не буду вдаваться в детали того, как работают 9-патч-изображения, но, короче говоря, пиксели, которые выравниваются по маркировке в верхней и левой области, - это пиксели, которые будут повторяться для растягивания изображения.

основные правила

  1. вы можете сделать эти изображения в photoshop (или любое изображение программное обеспечение для редактирования, которое может точно создавать прозрачные pngs).
  2. 1-пиксельная граница должна быть полностью прозрачной.
  3. 1-пиксельная прозрачная граница должна быть вокруг вашего изображения, а не только сверху и слева.
  4. вы можете рисовать только черные (#000000) пиксели в этой области.
  5. верхняя и левая границы (которые определяют растяжение изображения) могут иметь только одну точку (1px x 1px), две точки (обе 1px x 1px) или одну непрерывную линию (ширина x 1px или 1px x высота.)
  6. если вы решите использовать 2 точки, изображение будет расширено пропорционально (поэтому каждая точка будет по очереди расширяться до достижения конечной ширины / высоты)
  7. граница 1px должна быть в дополнение к предполагаемым размерам базового файла. Таким образом, изображение 100x100 9-patch должно фактически иметь 102x102 (100x100 +1px сверху, снизу, слева и справа)
  8. 9-патч изображения должны заканчиваться *.9.png

таким образом, вы можете разместить 1 точку с обеих сторон ваш логотип (в верхней границе), и 1 точка выше и ниже его (на левой границе), и эти отмеченные строки и столбцы будут единственными пикселями, которые нужно растянуть.

пример

вот 9-патч изображение, 102x102px (100x100 окончательный размер, для целей приложения):

9-patch image, 102x102px

вот 200% зум того же изображения:

the same image, magnified 2x for clarity

обратите внимание на метки 1px сверху и слева, говоря, какие строки/столбцы будут расширяться.

здесь как это изображение будет выглядеть в 100x100 внутри приложения:

rendered into 100x100

и вот что он хотел бы, если расширен до 460x140:

rendered into 460x140

последнее, что нужно учитывать. Эти изображения могут отлично смотреться на экране монитора и на большинстве мобильных телефонов, но если устройство имеет очень высокую плотность изображения (dpi), изображение будет выглядеть слишком маленьким. Вероятно, все еще разборчиво, но на планшете с разрешением 1920x1200 изображение будет выглядеть как очень маленькое квадрат посередине. Так в чем же решение? Дизайн 4 различных 9-патч launcher изображений, каждый для другого набора плотности. Чтобы гарантировать, что сжатие не произойдет, вы должны проектировать в самом низком общем разрешении для каждой категории плотности. Сжатие здесь нежелательно, потому что 9-патч учитывает только растяжение, поэтому в процессе сжатия небольшой текст и другие элементы могут потерять разборчивость.

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

  • xlarge (xhdpi): 640x960
  • большой (hdpi): 480x800
  • средний (mdpi): 320x480
  • малый (ldpi): 240x320

Итак, создайте четыре заставки в вышеупомянутых разрешениях, разверните изображения, поставив прозрачную границу 1px вокруг холста и отметьте, какие строки/столбцы будут растягиваться. Имейте в виду, что эти изображения будут использоваться для любой устройство в категории плотности, поэтому ваше изображение ldpi (240 x 320) может растягиваться до 1024x600 на очень большом планшете с небольшой плотностью изображения (~120 dpi). Таким образом, 9-patch-лучшее решение для растяжки, Если вы не хотите использовать фотографию или сложную графику для экрана-заставки (имейте в виду эти ограничения при создании дизайна).

опять же, единственный способ, чтобы это растяжение не произошло, - это создать один экран для каждого разрешения (или один для каждой комбинации плотности разрешения, если вы хотите избежать слишком больших изображений маленький / большой на устройствах с высокой/низкой плотностью), или сказать, что изображение не растягивается и имеет цвет фона, где бы ни происходило растяжение (также помните, что конкретный цвет, отображаемый движком Android, вероятно, будет отличаться от того же конкретного цвета, отображаемого photoshop, из-за цветовых профилей).

Я надеюсь, что это имело какой-то смысл. Удачи вам!

ПОРТРЕТНЫЙ РЕЖИМ

MDPI составляет 320x480 dp = 320x480px (1x)

LDPI составляет 0.75 X MDPI = 240x360px

HDPI составляет 1,5 х MDPI = 480x720px

XHDPI - это 2 x MDPI = 640x960px

XXHDPI - это 3 x MDPI = 960x1440px

XXXHDPI - это 4 x MDPI = 1280x1920px

ЛАНДШАФТНЫЙ РЕЖИМ

MDPI - это 480x320 dp = 480x320px (1x)

LDPI составляет 0.75 X MDPI = 360x240px

HDPI составляет 1,5 х MDPI = 720x480px

XHDPI - это 2 x MDPI = 960x640px

XXHDPI - это 3 x MDPI = 1440x960px

XXXHDPI - это 4 x MDPI = 1920x1280px

портрет

LDPI: 200x320px

MDPI: 320x480px

HDPI: 480x800px

XHDPI: 720px1280px

пейзаж

LDPI: 320x200px

MDPI: 480x320px

HDPI: 800x480px

xhdpi разрешение: 1280x720 Пикс

Я искал лучший и самый простой ответ, чтобы сделать 9-патч изображение. Теперь, чтобы сделать 9 патч изображения, является простой задачей.

от https://romannurik.github.io/AndroidAssetStudio/index.html вы можете сделать 9-патч изображение для всех разрешений-XHDPI, HDPI, MDPI, LDPI всего за один клик.

использование PNG не такая хорошая идея. На самом деле это дорого, что касается производительности. Вы можете использовать рисованные XML-файлы, например, фон Facebook.

Это поможет вам сгладить и ускорить вашу работу, а также для использования логотипа .9 патч изображения.

Density buckets

LDPI    120dpi    .75x
MDPI    160dpi    1x
HDPI    240dpi    1.5x
XHDPI   320dpi    2x
XXHDPI  480dpi    3x
XXXHDPI 640dpi    4x

px / dp = dpi / 160 dpi

в моем случае, я использовал список drawable в стиле.XML. С помощью списка слоев drawable вам просто нужен один png для всех размеров экрана.

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@drawable/flash_screen</item>
    <item name="android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
</style>

и flash_screen.xml в папке drawable.

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white"></item>
<item>
    <bitmap android:src="@drawable/background_noizi" android:gravity="center"></bitmap>
</item>

"background_noizi" - это png в папке drawable. Я надеюсь, что это поможет

некоторое время назад я создал файл excel с поддерживаемыми размерами
надеюсь, что это будет полезно для кого-то

честно говоря, я потерял идею, но это относится к другой функции экрана, как размер (не только плотность)
https://developer.android.com/guide/practices/screens_support.html
Пожалуйста, сообщите мне, если есть какие-то ошибки

Link1: размеры.XLSX-файл

Link2: размеры.XLSX-файл

* * Если вы ищете детали экрана для всех видов основных устройств **

перейти к material.io