Путаница с drawable-hdpi,drawable-mdpi,drawable-ldpi и drawable

Я нахожусь на одном действительно большом проекте, который был запущен во времена Android 1.5.

Этот проект развивался по мере развития Android и на данный момент поддерживает 2.3 и выше.

Теперь у меня есть эта проблема, у меня есть много drawables в drawable-hdpi,drawable-mdpi,drawable-ldpi, но также и в папке drawable.

Вообще концепция этих 3 папок (drawable-hdpi,drawable-mdpi,drawable-ldpi) мне понятна, но моя путаница возникает с изображениями в папке drawable.

например, у меня есть изображение с именем myimage.png, и это изображение присутствует в папках drawable-hdpi,drawable-mdpi,drawable-ldpi с разрешением 72x72,48x48,36x36 соответственно, но это изображение также присутствует в папке drawable.

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

так может кто-нибудь прояснить мне наличие папки для рисования?

Я знаю, что если у меня нет папок dhpi, mdpi и ldpi, мне нужно поместить изображения в рисованные, но какой смысл изображения в рисованных, когда присутствуют эти 3 папки?

Спасибо

РЕДАКТИРОВАТЬ

еще один вопрос, что, если у меня есть изображение в drawable-hdpi, но не в ldpi и не я mdpi. Допустим, у нас есть телефон с плотностью разрешения mdpi... Что будет?

5 ответов

Решение

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

Я нашел эту фразу в документе:

Например, представьте, что у вас есть значок приложения icon.png, и вам нужна уникальная версия для разных локалей. Тем не менее, два языка, английский-канадский и французско-канадский, должны использовать одну и ту же версию. Вы можете предположить, что вам нужно скопировать одно и то же изображение в каталог ресурсов для англо-канадского и франко-канадского языков, но это не так. Вместо этого вы можете сохранить изображение, которое используется для обоих, как icon_ca.png (любое имя, отличное от icon.png) и поместить его в каталог res/drawable/ по умолчанию. Затем создайте файл icon.xml в res/drawable-en-rCA/ и res/drawable-fr-rCA/, который ссылается на ресурс icon_ca.png с помощью элемента. Это позволяет хранить только одну версию файла PNG и два небольших файла XML, которые указывают на него. (Пример XML-файла показан ниже.)

Пожалуйста, обратитесь к этой ссылке для большей ясности.

Как я уже сталкивался при запуске приложения на Android 1.5 и 2.0, если изображения, используемые в любом макете, недоступны в папке "drawable", тогда проект выдает ошибку "Resource not found", даже если изображение присутствует в другом hdpi., MDP или LDPI папку.

Речь идет не о плотности, есть и другие классификаторы, хотя в большинстве случаев мы не используем их много. Список классификаторов смотрите здесь и здесь. Вы можете использовать -finger -language ... и т.д. Если вы хотите предоставить ресурсы по умолчанию для квалификатора [в данном случае - для рисования], вы можете выбрать папку для рисования по умолчанию. Или много папок по умолчанию без определителей, добавленных позади них

Кстати, вам не нужна папка для рисования, если у вас есть все три типа папок (drawable-hdpi,drawable-mdpi,drawable-ldpi) с изображениями с разным разрешением.

Я думаю, что эта страница должна помочь вам лучше понять. Спасибо за вопрос. Я сам не знал ответа. Обычно у вас есть 4 разные версии, и если не существует точно совпадающей версии, используется версия по умолчанию (без квалификатора).

Другие вопросы по тегам