Папки с возможностью рисования в папке res?
Вопрос
В чем разница между тремя папками с возможностью рисования в папке res в иерархии проекта?Если мне нужно поместить изображение в папку, в какую папку мне его поместить?
Решение
Я собираюсь предположить, что «три выдвижные папки» drawable-ldpi
, drawable-mdpi
, и drawable-hdpi
.В этом случае, если вы придерживаетесь всех этих папок, вам нужно поместить в каждую по одному изображению, размер которого соответствует указанной плотности экрана.Об этом говорится в онлайн-документация а также это Сообщение блога.Вы можете найти набор примеров проектов, демонстрирующих использование различных ресурсов рисования в зависимости от плотности экрана. здесь.
Если вы только начинаете заниматься разработкой Android, вы можете избавиться от всех трех этих каталогов и создать один. drawable
каталог, поместив туда свое изображение.Однако в конечном итоге для создания качественного приложения вам понадобится протестировать свои изображения на разных устройствах/эмуляторах с разной плотностью экрана и, возможно, иметь разные изображения для каждой плотности, чтобы улучшить внешний вид вашего приложения.
Другие советы
Вот ссылка на варианты нескольких устройств.
Как сказал @CommonsWare, вы этого не сделаете. нуждаться помещать ресурсы во что угодно, кроме res/layout/ или drawable/, но если вы хотите, чтобы ваша программа работала лучше на нескольких устройствах с разными экранами/плотностью/языками, вы можете рассмотреть возможность использования такой возможности.
Также интересно, хотя и не только для изображений, то, как Android обрабатывает ресурсы.Он дает им порядок загрузки, где более конкретный означает, что он будет выбран менее конкретным.
Например, у вас есть три значения String в файле strings.xml в папке значений.У вас также есть одна конкретная строка в папке с именемvalues-en.Когда Android открывает ваше приложение и ваш языковой стандарт соответствует en, он загружает два значения по умолчанию из папки значений и третью, более конкретную строку, из значений-en.Если ваша локаль — ru, вместо нее будет использоваться значение по умолчанию, поскольку у вас нет папки значений-ru.
То же самое справедливо и для изображений.Если Android не может найти изображения для вашего конкретного варианта экрана, он будет использовать значения по умолчанию из папки с возможностью рисования.
На мой взгляд, хорошей практикой является наличие значений/изображений по умолчанию в общих папках, таких как значения/рисуемые, и конкретных значений/изображений в определенных папках.Таким образом, как нынешние, так и будущие устройства, по крайней мере, смогут отображать ваш контент до тех пор, пока вы не предоставите конкретные версии.