从在线位置android加载矢量drawables

时间:2016-09-23 14:19:51

标签: android svg android-vectordrawable

如何从在线位置加载矢量绘图,例如http://arsenal.com/image.xml并将其显示为图像

1 个答案:

答案 0 :(得分:3)

您是否需要在旧设备上支持VectorDrawables?如果是这样,那么我认为目前不可能。 AFAIK支持库只允许你分配一个VectorDrawable(如果它是一个资源)(即通过setImageResource())。

http://android-developers.blogspot.co.nz/2016/02/android-support-library-232.html

替代方案是使用SVG代替并使用Android的SVG库之一。

但是,如果您只需要支持Lollipop以及之后,那么应该可以使用下面列出的流程。虽然我自己没有尝试过。

首先,将StreamDrawable文件作为Stream获取。例如,请参阅this question

然后,您需要制作一个XmlPullParser实例。

xppXmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();

然后告诉解析器有关流的信息

xpp.setInput(input, null);

然后你可以通过调用inflate()获得VectorDrawable。将它传递给解析器实例。

VectorDrawable  vd = new VectorDrawable();
vd.inflate(getResources(), xpp, null, null);

然后你应该能够将drawable分配给你的ImageView。

imageView.setImageDrawable(vd);
祝你好运!