Подтвердить что ты не робот

Объясните разницу между drawable, drawable-ldpi, drawable-mdpi и drawable-hdpi

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

Например, каковы целевые DPI для каждого каталога? Когда вы создаете актив, должен ли он быть в этом целевом DPI или должен быть на более нормальном 72 DPI-экране DPI? Если вы настроили таргетинг на несколько устройств, всегда ли уместно поместить PNG в drawable или у вас всегда есть несколько версий, слегка адаптированных к конкретным экранам?

Спасибо.

4b9b3361

Ответ 1

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

  • Рассмотрим MDPI 1. Затем LDPI имеет значение 0.75, а HDPI - 1.5. Это означает, что если на экране MDPI есть растягиваемый, скажем, 50x50, он должен быть ~37x37 на экране LDPI и 75x75 на экране HDPI, , чтобы появиться примерно на одном физическом уровне на каждом экране (т.е. 2 см, если вы поместите линейку на экран). Кроме того, экран вашего компьютера, скорее всего, является MDPI, поэтому рекомендуется начинать с MDPI-чертежей, а затем изменять их размер: размер физического размера для рисования будет очень близок между вашим экраном компьютера и MDPI Android устройство. Если вы просматриваете HDPI, выгружаемый на вашем компьютере и на устройстве HDPI, вы заметите, что он намного больше (опять же, физически - поместите линейку в этот стиль) на Экран ПК.
  • Если вы не предоставляете специальные чертежи для каждой плотности, Android будет масштабировать ближайший доступный автоматически.
  • Вы не должны рассматривать DPI устройства как нечто, имеющее отношение к размеру экрана и/или количеству пикселей, и/или разрешение и/или соотношение сторон. Устройство может быть очень маленьким и иметь экран HDPI или очень большой и иметь экран LDPI. Весь смысл этой дифференциации плотности состоит в том, чтобы вещи выглядели одинаковыми размерами на всех устройствах, не для всех устройств. Например, если вырезаемый заполняет весь экран на одном устройстве MDPI, не ожидайте, что он сделает то же самое на другом устройстве MDPI. Кроме того, не ожидайте "увидеть одно и то же" на разных устройствах DPI. Большинство устройств HDPI на самом деле имеют больше, чем более низкие устройства DPI. Например, если ListView может отображать 5 элементов на устройстве MDPI, он может отображать 6 элементов на устройстве HDPI, несмотря на то, что элементы ListView имеют одинаковую плотность (т.е. в 1,5 раза больше на HDPI, чем на MDPI).

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

Ответ 3

Точных значений DPI для каждой папки нет. Каждая папка связана с некоторым диапазоном. См. Здесь: http://developer.android.com/guide/practices/screens_support.html

Эти каталоги должны содержать ресурсы, оптимизированные для определенной плотности экрана. Вы можете удерживать только один снимок для HDPI или любого другого, но на устройствах с другими настройками DPI изображение будет каким-то образом изменено, и потребуется время/ресурсы. Также низкое изображение DPI будет выглядеть плохо на устройствах с HDPI.

Ответ 4

Благодаря разным размерам экрана и разрешениям, Android позволяет упорядочивать изображения в соответствии с папками. Изображения для дисплеев с высоким разрешением должны быть помещены в hdpi и аналогично mdpi и ldpi. Папка по умолчанию для drawables - это drawables, если операционная система не соответствует категории dpi или ресурсы не найдены в специальных каталогах dpi, система выбирает ресурс из каталога drawables.

Размер не является точным, но до 130 точек на дюйм считается небольшим, от 130 до 180 он может считаться mdpi, от 180 до 200 он может рассматриваться как hdpi, а высший - как xdpi.

http://developer.android.com/guide/practices/screens_support.html