Как подготовить изображения для всех разрешений Android?

В iOS подготовка графики проста. Есть либо обычное изображение (высота x ширина), либо изображение сетчатки, которое имеет размер @2x (2 x высота x 2 x ширина).

Однако, поскольку я новичок в Android, я вижу массу папок drawable-* в Eclipse, где * может быть «hdpi», «ldpi», «mdpi», «xhdpi» или «xxhdpi». Может ли кто-нибудь очень четко и просто перечислить для меня, что я должен сделать, чтобы удовлетворить каждую из возможностей отображения, чтобы мои изображения выглядели правильно в каждом случае? Я предполагаю, что ответ будет представлять собой маркированный список с каждым перечисленным знаком «*» и подпунктовый список, включающий то, что необходимо сделать.

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


person Art Geigel    schedule 03.05.2013    source источник
comment
developer.android.com/guide/practices/. Проверьте документацию. Прочтите документ полностью.   -  person Raghunandan    schedule 03.05.2013
comment
Эта диаграмма тоже должна помочь.   -  person Kevin Coppock    schedule 03.05.2013
comment
проверьте это также stackoverflow.com /вопросы/16706076/   -  person Bhavesh Jethani    schedule 24.07.2014


Ответы (4)


брал с этого сайта, до сих пор пригодится

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
Generalised Dpi values for screens:

ldpi Resources for low-density (ldpi) screens (~120dpi)
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi) screens (~320dpi).
Therefore generalised size of your resources (assuming they are full screen):

ldpi
Vertical = 426 * 120 / 160 = 319.5px
Horizontal = 320 * 120 / 160 = 240px
mdpi
Vertical = 470 * 160 / 160 = 470px
Horizontal = 320 * 160 / 160 = 320px
hdpi
Vertical = 640 * 240 / 160 = 960px
Horizontal = 480 * 240 / 160 = 720px
xhdpi
Vertical = 960 * 320 / 160 = 1920px
Horizontal = 720 * 320 / 160 = 1440px

px = dp*dpi/160
person JRowan    schedule 03.05.2013

В Android Studio просто перейдите в File -> New -> Image Asset и создайте изображения прямо из IDE.

person BigPun86    schedule 07.07.2015
comment
Я могу найти только возможность создавать значки. Как импортировать любое изображение для использования в проекте? - person Joel Broström; 08.11.2020

В Android мы обычно обрабатываем размеры изображений в единицах «dp» или «dip», что означает независимый от устройства пиксель. 1 падение = 1 пиксель на экране mdpi. Существует множество устройств с разной плотностью экрана, а не только с обычным и сетчатым экраном, поэтому существует несколько сегментов DPI, в которые может попасть экран устройства:

  • ldpi (низкое разрешение): около 120 dpi
  • mdpi (средний dpi): около 160 dpi
  • hdpi (высокое разрешение): около 240 dpi
  • xhdpi (сверхвысокое разрешение): около 320 dpi

Обратите внимание, что это ведра, поэтому устройство с экраном 170 dpi будет считаться устройством mdpi.

Допустим, у вас есть векторное изображение в PS, и вам нужно создать ресурс изображения для Android, и вы хотели бы поддерживать все эти плотности экрана. Допустим, это изображение должно быть размером 100x100. Таким образом, вы создаете версию 100x100 пикселей для mdpi, версию 150x150 пикселей для hdpi, 200x200 для xhdpi и 75x75 для ldpi. Вы можете думать о «mdpi — xhdpi» на Android как «обычный — retina» на iOS.

Что касается размера изображения, которое вы можете использовать, я действительно не могу сказать. Насколько мне известно, жесткого ограничения нет, но устройство, очевидно, не сможет загрузить растровое изображение размером 20000x20000 в память без субдискретизации из-за ограничений кучи.

person Zsombor Erdődy-Nagy    schedule 03.05.2013
comment
Еще немного пояснений: чем больше экран и чем лучше разрешение, тем выше показатель dp. Некоторые экраны одного и того же размера имеют разное количество пикселей, то есть разные dpi. Поэтому им нужен другой ресурс (очевидно, с высоким разрешением и большим количеством пикселей). - person sivi; 18.01.2014

Для этого есть онлайн-инструмент Android Asset Studio, а также есть File|New|Android Icon Set в Затмение

person Alexander Kulyakhtin    schedule 03.05.2013
comment
Не слишком ли малы эти файлы для представления изображения на мобильных устройствах? Разве это не только для иконы? - person sivi; 18.01.2014
comment
Обновил ссылку. Не уверен, что это официальный инструмент или нет. Сам AS теперь имеет аналогичный встроенный инструмент для этого. - person Alexander Kulyakhtin; 21.06.2016
comment
Инструмент AS предназначен для изображения размера значка, поэтому он довольно ограничен. - person Sakiboy; 03.04.2017