Roc*_*ket 3 android android-vectordrawable
我正在尝试从资产加载矢量可绘制对象。
当我使用 png 文件时它工作正常:
final String name = "image.png";
final InputStream stream = context.getAssets().open(name);
drawable = Drawable.createFromStream(stream, name);
stream.close();
Run Code Online (Sandbox Code Playgroud)
我尝试使用 VectorDrawable.createFromStream() 和 VectorDrawableCompat.createFromStream() 但两者总是返回 null。
当我将矢量 drawable 添加到 drawbles 资源时,它可以毫无问题地加载。
我还尝试使用在将矢量文件添加到可绘制资源时创建的二进制 xml 文件。
我使用 API level 24 和 Support libs 24.2.0 with 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);
Run Code Online (Sandbox Code Playgroud)
image.xml 必须是预编译的二进制 xml 文件。当您将矢量 drawable 添加到 drawable 资源时,您可以从生成的 apk 文件中提取它们。
这种方法的问题是,它需要 Android 5。但我需要一个适用于 Android 4.2 的工作代码。任何人的想法?
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |