Объясните разницу между drawable, drawable-ldpi, drawable-mdpi и drawable-hdpi - PullRequest
13 голосов
/ 16 июня 2011

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

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

Спасибо.

Ответы [ 4 ]

36 голосов
/ 16 июня 2011

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

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

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

2 голосов
/ 16 июня 2011

Извините, но у Android есть отличный онлайн-документ с примерами, поэтому ответ на этот вопрос:

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

1 голос
/ 16 июня 2011

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

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

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

1 голос
/ 16 июня 2011

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

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

...