Будет ли приоритетная папка с допустимыми размерами или drawable-nodpi иметь приоритет?
Если я определяю drawables для density qualified folder
(например, drawable-hdpi), а также drawables для возврата в drawable-nodpi
, будет ли high density device
использовать -hdpi
поверх -nodpi
?
Как насчет того, если я сделаю это еще дальше, а также будет иметь ту же настройку для папок -land
.
Ответы
Ответ 1
Я не уверен, что имеет приоритет для nodpi
, но это никогда не должно быть проблемой. Похоже, вы недооцениваете квалификатор nodpi
. Вы не должны использовать nodpi
как резерв для активов, которые вы не предоставляете в веществе плотности устройства. Правильный откат - это папка без квалификатора плотности (например, drawable/
).
Если система не может найти ресурс при плотности устройства (например, это устройство ldpi, и у вас нет папки drawable-ldpi
), она вернется в папку без квалификатора плотности *, а не nodpi
квалификатор`.
Квалификатор nodpi
используется, когда вы хотите указать ресурс, который будет использоваться для всех плотностей, и что вы не хотите, чтобы Android масштабировался. Активы в других папках плотности (например, drawable-xhdpi
) будут масштабированы до фактического размера экрана. Если вы используете квалификатор nodpi
, вы не должны указывать этот актив в каких-либо других папках ресурсов.
Также важно отметить, что с квалификаторами плотности экрана Android также предпочтет использовать ресурс с более низкой плотностью по неквалифицированному ресурсу. Если у вас есть устройство xhdpi, но у вас есть только drawable
и drawable-mdpi
, Android проверит наличие актива в папке mdpi перед неквалифицированной папкой.
Ответ 2
drawable-nodpi будет обходить масштабирование, а drawable будет использовать масштабирование по умолчанию:
mdpi = 1x
hdpi = 1.5x
xhdpi = 2x
xxhdpi = 3x
xxxhdpi = 4x
drawable-nodpi эффективен, если ваш код будет делать свое собственное масштабирование
(или без масштабирования), и вы не хотите, чтобы изображение было предварительно настроено Android.
Существует также drawable-anydpi, чтобы сделать вещи более запутанными.
drawable без спецификаций будет использоваться, если точное соответствие по плотности и спецификациям экрана не существует. drawable-nodpi будет использоваться после рисования.
ОБНОВЛЕНИЕ. Если у вас есть как drawable, так и drawble-nodpi, порядок выбора - это более сложное правило, не зарегистрированное или Android не работает. Благодаря экспериментам я подтвердил, что устройства с плотностью экрана < xhdpi будет правильно выбирать отображаемое изображение. Устройства с плотностью экранa >= xhdpi выберет drawable-nodpi.
Правило выбора:
1. Выберите соответствие плотности экрана, одна из которых:
- drawable-ldpi
- drawable-mdpi
- drawable-hdpi
- drawable-xhdpi
- drawable-xxhdpi
- drawable-xxxhdpi
- Если нет плотности по плотности, выберите один из этих
- drawable (автоматическое масштабирование mdpi = none... xxxhdpi = 4x)
- drawable-nodpi (без масштабирования)
- drawable-tvdpi
- drawable-anydpi (без масштабирования)
Ответ 3
Это зависит.
Прежде всего, nodpi
- это не nodpi
папка. Если у вас есть устройство hdpi, система сначала будет искать папку hdpi
. Папка nodpi
содержит ресурсы, которые не предназначены для масштабирования.
drawable/
может использоваться как резервная папка в случае, если отсутствуют специфичные для плотности устройства ресурсы.
Затем, если мы посмотрим на возможные значения квалификатора для плотности пикселей экрана (dpi), они перечислены как:
- ldpi
- MDPI
- ИПЧР
- xhdpi
- xxhdpi
- xxxhdpi
- nodpi (ресурсы не масштабируются здесь)
- tvdpi
- anydpi (ресурсы в этой папке имеют наивысший приоритет)
- nnndpi
Примечание: вы должны поместить все те ресурсы в папку drawable-nodpi
которые вы не хотите масштабировать. Для поддержки нескольких экранов Android предпочитает уменьшать исходное изображение большего размера, чем уменьшать исходное изображение меньшего размера. Эти ресурсы не должны присутствовать в какой-либо другой папке drawable-qualifier, иначе они могут быть масштабированы, что отрицательно сказывается на цели.
Также следует отметить, что:
Использование квалификатора плотности не означает, что ресурсы предназначены только для экранов этой плотности. Если вы не предоставите альтернативные ресурсы с определителями, которые лучше соответствуют текущей конфигурации устройства, система может использовать те ресурсы, которые лучше всего подходят.
Вот блок-схема выбора ресурса, которую система использует для поиска лучшего соответствия:
![enter image description here]()
Ответ 4
Выбираемый квалификатор nodpi используется, когда изображение/объект не нужно масштабировать.
Возможность рисования в других папках плотности (например, drawable-xhdpi) будет масштабироваться до фактического размера экрана.
drawable-nodpi для постоянного размера во всех устройствах плотности.