Будет ли приоритетная папка с допустимыми размерами или 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
  1. Если нет плотности по плотности, выберите один из этих
  • drawable (автоматическое масштабирование mdpi = none... xxxhdpi = 4x)
  • drawable-nodpi (без масштабирования)
  • drawable-tvdpi
  • drawable-anydpi (без масштабирования)

Ответ 3

Это зависит.

Прежде всего, nodpi - это не nodpi папка. Если у вас есть устройство hdpi, система сначала будет искать папку hdpi. Папка nodpi содержит ресурсы, которые не предназначены для масштабирования.

drawable/ может использоваться как резервная папка в случае, если отсутствуют специфичные для плотности устройства ресурсы.


Затем, если мы посмотрим на возможные значения квалификатора для плотности пикселей экрана (dpi), они перечислены как:

  1. ldpi
  2. MDPI
  3. ИПЧР
  4. xhdpi
  5. xxhdpi
  6. xxxhdpi
  7. nodpi (ресурсы не масштабируются здесь)
  8. tvdpi
  9. anydpi (ресурсы в этой папке имеют наивысший приоритет)
  10. nnndpi

Примечание: вы должны поместить все те ресурсы в папку drawable-nodpi которые вы не хотите масштабировать. Для поддержки нескольких экранов Android предпочитает уменьшать исходное изображение большего размера, чем уменьшать исходное изображение меньшего размера. Эти ресурсы не должны присутствовать в какой-либо другой папке drawable-qualifier, иначе они могут быть масштабированы, что отрицательно сказывается на цели.


Также следует отметить, что:

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


Вот блок-схема выбора ресурса, которую система использует для поиска лучшего соответствия:

enter image description here

Ответ 4

Выбираемый квалификатор nodpi используется, когда изображение/объект не нужно масштабировать.

Возможность рисования в других папках плотности (например, drawable-xhdpi) будет масштабироваться до фактического размера экрана.

drawable-nodpi для постоянного размера во всех устройствах плотности.