从SD卡中加载矢量图形并在ImageView中显示

6

我想在Android中的ImageView中显示SD卡中的矢量图像(例如vectorimage.xml)。请提供一些关于如何实现此目标的见解。

我已尝试过以下方法:

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

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

上面的代码片段无法工作,因为bitmapImage为空。

你是否在 imagepath 中获取了路径?请检查一下并且查看 menifest 权限。 - Vickyexpert
1
是的,我已经使用相同的代码片段使它与JPEG格式工作。 - Ramya BA
@RamyaBA 我也遇到了同样的问题。 - Sreekanth Karumanaghat
有人找到解决方案了吗? - Prateek
1个回答

5

BitmapFactory无法加载矢量图形。您需要使用VectorDrawable或VectorDrawableCompat类。要加载矢量可绘制图形,您需要使用XML加载器。

一些解析器(如资源解析器)需要预编译的二进制XML文件。将矢量可绘制对象放入drawable资源目录中后,您可以在apk文件中找到它们。

以下是从资产中加载它的示例,您应该能够使用类似的代码来从SD卡加载它。

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

这种方式至少需要 Android 5.0。

1
这不适用于SD卡(外部存储)! - Jorgesys
创建了一个请求:https://issuetracker.google.com/issues/62435069 - android developer
我没有看到在应用程序外部加载矢量图像的方法,@Rocket 有什么想法吗? - Prateek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接