【问题标题】:VectorDrawable: Android loads xhdpi PNG's instead of the vector resourceVectorDrawable:Android 加载 xhdpi PNG,而不是矢量资源
【发布时间】:2015-03-12 03:07:37
【问题描述】:

我正在尝试在 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 资源。但这意味着我们还必须拥有其他密度的文件副本(或符号链接)(例如xhdpihdpi 等)

【问题讨论】:

  • nodpi-21 怎么样?不就解决了吗?
  • 来吧,关闭问题
  • @pengrad 不必要的评论哥们...
  • 您可以避免使用 PNG 文件并在所有 Android 版本上仅使用 VectorDrawable,因为支持库可以处理这种情况。只需使用“app:srcCompat”而不是“app:src”,并在应用程序 gradle 文件的“defaultConfig”区域内设置标志“vectorDrawables.useSupportLibrary = true”。 VectorDrawable 应该在“res/drawable”文件夹中。

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


【解决方案1】:

drawable-anydpi-v21 适合这个

drawable-anydpi-v21/test_icon.xml

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

【讨论】:

    【解决方案2】:

    我找到的解决方案有点破解,但似乎有效。与其将您的 VertorDrawable xml 文件放在每个带有版本的存储桶中,不如将它们放在 drawable-w1dp-v21 中,它会占用正确的资源并且不需要有多个副本。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-01
      • 2017-11-05
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 2019-04-01
      相关资源
      最近更新 更多