gpt4 book ai didi

android - VectorDrawable createFromStream 似乎不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 08:33:05 24 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

这个问题可能与此有关: Load a vector drawable into imageview from sd card

最佳答案

在查看 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 的工作代码。有人有想法吗?

关于android - VectorDrawable createFromStream 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39072634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com