从 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
我想在 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