#android #resources #drawable
#Android #Ресурсы #можно рисовать
Вопрос:
У меня есть следующие папки для рисования
/drawable/
/drawable-hdpi/
/drawable-ldpi/
/drawable-mdpi/
/drawable-xhdpi/
Если у меня есть ресурс изображения, нужно ли мне создавать 5 (или 4?) Версий файла с разным разрешением? Допустим, я создаю только две версии и помещаю их в соответствующие папки:
/drawable/
/drawable-hdpi/image.png
/drawable-ldpi/
/drawable-mdpi/image.png
/drawable-xhdpi/
Что происходит, когда кто-то на устройстве LDPI или XHDPI посещает действие, которое необходимо отобразить image.png
? Он просто не показывает это? Происходит сбой приложения? Или Android следует системе каскадирования ресурсов, показывает версию, ближайшую к текущей плотности экрана?
Кроме того, в этом случае у меня нет image.png
в /drawable/
папке. Это плохо? Должен ли каждый отдельный ресурс иметь (как минимум) версию в /drawable/
папке?
Кроме того, если вы указали все 4 папки для рисования с плотностью экрана (xhdpi, hdpi, mdpi, ldpi), тогда в чем смысл обычной /drawable/
папки? Когда это когда-нибудь будет использовано?
Ответ №1:
Если у меня есть ресурс изображения, нужно ли мне создавать 5 (или 4?) Версий файла с разным разрешением?
Нет, вам не нужно
Что происходит, когда кто-то на устройстве LDPI или XHDPI посещает действие, которое должно отображать image.png? Он просто не показывает это? Происходит сбой приложения? Или Android следует системе каскадирования ресурсов, показывает версию, ближайшую к текущей плотности экрана?
Android использует хорошую каскадную систему для своих ресурсов. На этой странице это немного объясняется. Устройства LDPI Afaik используют ресурс MDPI, если ресурс LDPI недоступен, XHDPI использует ресурсы HDPI. (Я мог бы быть немного не в себе, я не могу вспомнить точные правила) Ваше приложение не вылетает. Ваше приложение вылетает, если у вас есть только ресурсы с более высоким разрешением, чем может принять экран.
Кроме того, в этом случае у меня нет файла image.png в папке /drawable/ . Это плохо? Должен ли каждый отдельный ресурс иметь (как минимум) версию в папке /drawable/ ?
Нет, не обязательно.
Кроме того, если вы указали все 4 папки для рисования с плотностью экрана (xhdpi, hdpi, mdpi, ldpi), тогда в чем смысл папки normal / drawable /? Когда это когда-нибудь будет использовано?
Папка для рисования предназначена для изображений, которые не нуждаются в масштабировании, и таких вещей, как XML-файлы ресурсов для рисования и т. Д.
Комментарии:
1. Спасибо. Что касается ваших знаний о LDPI с использованием MDPI и XHDPI с использованием HDPI, откуда вы получили эту информацию? Или это только из тестирования?
2. Смотрите мое редактирование, добавлена ссылка: developer.android.com/guide/topics/resources /…
3. К вашему сведению, я нашел это на этой странице
However, if the only available resources are larger than the current screen, the system will not use them and your application will crash if no other resources match the device configuration (for example, if all layout resources are tagged with the xlarge qualifier, but the device is a normal-size screen).
4. круто, я не знал, что на самом деле, каждый день что-то новое 😉 Отразил это в ответе для ясности другим.
5. Приведенный выше текст относится к размеру экрана, а не к плотности экрана. У них нет ресурсов, специфичных для «разрешения».