从 SD 卡加载矢量绘图到图像视图

Load a vector drawable into imageview from sd card

我想在 sd 卡的图像视图中显示矢量图(比如 vectorimage.xml)。请在 android 中就如何执行此操作提出一些见解。 我已经尝试过的:-

String imagePath = Environment.getExternalStorageDirectory() + "/ folder/productImage.xml";

bitmapImage = BitmapFactory.decodeFile(imagePath);
Drawable bgrImageDrawable = new BitmapDrawable(bitmapImage);

上面的代码片段不起作用,因为 bitmapImage 为空。

BitmapFactory 无法加载矢量绘图。 您必须使用 VectorDrawable 或 VectorDrawableCompat class。 要加载矢量可绘制对象,您需要使用 xml 加载器。

某些解析器(例如资源解析器)需要预编译的二进制 xml 文件。把vector drawable放到drawable资源目录下,就可以在apk文件中找到了。

这里是一个从资产中加载它的示例,您应该可以使用类似的代码从 sd 卡中加载它。

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

这种方式至少需要Android5.0