VectorDrawable createFromStream 似乎不起作用

VectorDrawable createFromStream does not seem to work

我正在尝试从资产中加载矢量可绘制对象。

当我使用 png 文件时它工作正常:

final String name = "image.png";
final InputStream stream = context.getAssets().open(name);
drawable = Drawable.createFromStream(stream, name);
stream.close();

我尝试使用 VectorDrawable.createFromStream() 和 VectorDrawableCompat.createFromStream() 但两者总是 return null。

当我将矢量可绘制对象添加到可绘制对象资源时,它可以毫无问题地加载。

我还尝试使用二进制 xml 文件,该文件是在将矢量文件添加到可绘制资源时创建的。

我使用 API 级别 24 和支持库 24.2.0 与 Android 5.1.1 来测试这个。它应该适用于 Android 4.2 及更高版本。

有人知道如何解决这个问题吗?

这个问题可能与这个问题有关:

查看 Android 源代码后,我找到了解决方案。 createFromStream 方法似乎不支持矢量绘图。因为它使用了 BitmapFactory。

但我们可以将它们加载为 xml 资源:

final XmlResourceParser parser = context.getAssets().openXmlResourceParser("assets/folder/image.xml");
drawable = VectorDrawableCompat.createFromXml(context.getResources(), parser);

image.xml 必须是预编译的二进制 xml 文件。 当您将矢量可绘制对象添加到可绘制对象资源时,您可以将它们从生成的 apk 文件中提取出来。

这种方法的问题是,它需要 Android 5。但是我需要 Android 4.2 的工作代码。有人有想法吗?