我遇到了SVG文件的问题。我正在尝试转换一个svg文件,该文件从Android材料库资源(见下文)转移到位图。我使用这个库来执行此操作:https://github.com/bigfishcat/svg-android
。
我添加的Sag文件名为ic_accessibility_black_24dp,它是通过从Android工作室转到 New-> Vector Asset-> Material Icon->选择 来添加的。这是标准的SVG,不以任何方式编辑。这是它的xml:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,2c1.1,0 2,0.9 2,2s-0.9,2 -2,2 -2,-0.9 -2,-2 0.9,-2 2,-2zM21,9h-6v13h-2v-6h-2v6L9,22L9,9L3,9L3,7h18v2z"/>
我用来转换的方法如下:
private Bitmap getBitmapFromSvg(int svgResId){
SVG svgIcon = new SVGBuilder().readFromResource(getResources(), svgResId).build();
Drawable pictureDrawable = svgIcon.getDrawable();
return Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
}
异常是在方法的第一行,我试图获取SVG文件。
08-17 22:14:35.795 31286-31286/com.shearwater.patientportal E/SVGAndroid: Failed to parse SVG.
org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: not well-formed (invalid token)
at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:515)
at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:474)
at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:316)
at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:279)
at com.larvalabs.svgandroid.SVGParser.parse(SVGParser.java:79)
at com.larvalabs.svgandroid.SVGBuilder.build(SVGBuilder.java:187)
at
我甚至不知道如何解决这个问题,我尝试使用谷歌搜索,看了this帖子,但是,似乎无法找到解决方案。拜托,有人能指出我正确的方向吗?
答案 0 :(得分:0)
对,傻我。我很困惑,因为试图找到一个svg文件的解决方案,而不是专注于矢量图形。但对我的问题的评论实际上帮了我很多,我现在点击了。答案是here。
当我将本地svg文件添加到drawable时,它获得.xml扩展名。然后我可以使用它的id将其转换为位图。因此无需使用额外的库。虽然要注意它是有帮助的。 : - )