VectorDrawable:Android加载xhdpi PNG而不是矢量资源

时间:2015-03-12 03:07:38

标签: android android-layout android-5.0-lollipop

我尝试在API21上使用VectorDrawable,但Android会从xxhdpi文件夹中加载PNG资源。 我目前的res结构如下:

  • RES
    • 抽拉-xxhdpi
      • test_icon.png
    • 抽拉-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资源。但这意味着我们必须为其他密度设置文件的副本(或符号链接)(例如xhdpihdpi等)

2 个答案:

答案 0 :(得分:6)

drawable-anydpi-v21适合

drawable-anydpi-v21/test_icon.xml

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

答案 1 :(得分:1)

我发现的解决方案有点像黑客但似乎有效。如果您将VertorDrawable xml文件放在版本的每个存储桶中,而不是将它们放在drawable-w1dp-v21中,则需要使用正确的资源,而不需要拥有多个副本。

这是因为,在决定使用哪种资源时,Android会检查密度和最小宽度密度之后,在这种情况下总是要超过1dp:)

更新:,因为@pengrad提到最好使用anydpi存储桶。 :)