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

6
我正在尝试在API21上使用VectorDrawable,但Android会加载来自xxhdpi文件夹的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资源,但如果是这种情况,那么如何在API21上使用矢量图和在较低的API中使用PNG呢?
[更新1]
如果我们使用drawable-xxhdpi-21资源文件夹,则Android将选择矢量而不是PNG资源。但这意味着我们还必须为其他密度(例如xhdpi,hdpi等)复制或建立符号链接。

nodpi-21怎么样?那不是解决了吗? - Zsolt Safrany
来吧,关闭这个问题。 - Stas Parshin
@pengrad 不必要的评论伙计... - Mokkun
您可以避免在所有 Android 版本上使用 PNG 文件,而只使用 VectorDrawable,因为支持库可以处理此情况。只需使用“app:srcCompat”而不是“app:src”,并在应用 gradle 文件的“defaultConfig”区域内设置标志“vectorDrawables.useSupportLibrary = true”。VectorDrawable 应该位于“res/drawable”文件夹中。 - android developer
2个回答

6

1
我找到的解决方案有点瑕疵,但似乎有效。如果您将VertorDrawable xml文件放在drawable-w1dp-v21中,而不是每个版本的桶中,它会选择正确的资源,而且不需要多个副本。
这是因为在决定使用哪个资源时,Android会检查密度和最小宽度密度,而在这种情况下,它总是大于1dp :)
更新:正如@pengrad所提到的,最好使用anydpi桶。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接