VectorDrawable: Android загружает xhdpi PNG вместо векторного ресурса

Я пытаюсь использовать VectorDrawable на API21, но Android загружает ресурс PNG из . Мой текущий res структура выглядит следующим образом:

  • res
    • drawable-xxhdpi
      • test_icon.формат PNG
    • drawable-21
      • test_icon.в XML

и мой XML-макет:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/test_icon"/>

есть ли другие способы решить эту проблему? Из моего понимания Android всегда будет выбирать ресурс PNG, но если это так, как можно использовать VectorDrawables на API21 и PNG для более низких API?

[обновление 1]

при использовании drawable-xxhdpi-21 папка ресурсов, Android выберет вектор вместо ресурса PNG. Но это означает, что мы должны иметь копию (или символическую ссылку) файла для других плотностей (например,xhdpi, hdpi и т. д.)

2 ответов


drawable-anydpi-v21 подходит для этого

drawable-anydpi-v21/test_icon.xml

https://google.github.io/material-design-icons/#icons-for-android


решение, которое я нашел, немного взломано, но, похоже, работает. Вместо того, чтобы положить ваш VertorDrawable xml-файлы в каждом ведре с версией, если вы поместите их в drawable-w1dp-v21 Он принимает правильный ресурс и не нужно иметь несколько копий.

это потому, что, решая, какой ресурс использовать, Android проверяет плотность и после минимальной плотности ширины, которая в этом случае всегда будет больше 1dp:)

обновление: as @pengrad упоминает лучше всего использовать anydpi ведро. :)