VectorDrawable:Android 加载 xhdpi PNG 而不是矢量资源
VectorDrawable: Android loads xhdpi PNG's instead of the vector resource
我正在尝试在 API21 上使用 VectorDrawable
,但 Android 改为从 xxhdpi
文件夹加载 PNG 资源。
我目前的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
等)
我找到的解决方案有点乱,但似乎可行。与其将 VertorDrawable
xml 文件与版本一起放入每个存储桶中,不如将它们放入 drawable-w1dp-v21
中,它会占用正确的资源并且不需要有多个副本。
这是因为,在决定使用哪个资源时,Android 检查密度和最小宽度密度之后,在这种情况下,它总是会超过 1dp :)
更新: @pengrad 提到最好使用 anydpi
存储桶。 :)
drawable-anydpi-v21 是正确的
drawable-anydpi-v21/test_icon.xml
https://google.github.io/material-design-icons/#icons-for-android
我正在尝试在 API21 上使用 VectorDrawable
,但 Android 改为从 xxhdpi
文件夹加载 PNG 资源。
我目前的res
结构如下:
- 资源
- drawable-xxhdpi
- test_icon.png
- drawable-21
- test_icon.xml
- drawable-xxhdpi
我的 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
等)
我找到的解决方案有点乱,但似乎可行。与其将 VertorDrawable
xml 文件与版本一起放入每个存储桶中,不如将它们放入 drawable-w1dp-v21
中,它会占用正确的资源并且不需要有多个副本。
这是因为,在决定使用哪个资源时,Android 检查密度和最小宽度密度之后,在这种情况下,它总是会超过 1dp :)
更新: @pengrad 提到最好使用 anydpi
存储桶。 :)
drawable-anydpi-v21 是正确的
drawable-anydpi-v21/test_icon.xml
https://google.github.io/material-design-icons/#icons-for-android