将SVG转换为Android Vector Drawable

时间:2019-03-30 15:42:11

标签: android android-studio svg android-vectordrawable

我正在尝试将命令行工具(abcm2ps)输出的SVG文件转换为Android矢量可绘制对象,但遇到了问题。

我的过程如下:

  1. 使用上述工具创建原始SVG文件
  2. 通过Inkscape运行SVG文件以固定页面大小
  3. 再次通过Inkscape运行结果以将其另存为Plain SVG(请阅读可能会解决问题的地方,尽管无济于事)
  4. 尝试将SVG文件导入Android Studio无用

我收到错误消息,说找不到某些引用的ID。我查看了XML文件,发现该错误仅发生在再次包含引用的引用中。示例:

<defs
   id="defs6633">
  <path
     id="usharp"
     class="fill"
     d="m 136,-702 v 890 h 32 v -890 m 128,840 h 32 V -750 H 296 M 64,-464 v 116 l 338,-96 V -560 M 64,-118 V -2 l 338,-98 v -114"
     inkscape:connector-curvature="0"
     style="fill:currentColor" />
  <use
     id="sh0"
     transform="matrix(0.018,0,0,0.018,-4,5)"
     xlink:href="#usharp"
     x="0"
     y="0"
     width="100%"
     height="100%" />
</defs>
<use
   x="44.5"
   y="20"
   xlink:href="#sh0"
   id="use6635"
   width="100%"
   height="100%" />

如您所见,对象use6635引用了sh0,后者又引用了usharp

在其他地方,被引用对象没有引用另一个对象。

这是转换器的已知限制吗?是否有一种方法(最好是命令行工具)可以平整引用层次结构,以便仅引用不引用其他对象的对象?


编辑:好的,先转换为EPS,然后转换为SVG,然后创建SVG,这些SVG将在没有上面警告的情况下进行处理-我现在得到警告,说不支持缩放的笔划宽度...

3 个答案:

答案 0 :(得分:1)

您应该尝试Shape Builder,我遇到了一个相关问题,它解决了我的问题,希望对您也有帮助!

答案 1 :(得分:1)

我使用这个简单的工具将SVG文件转换为xml,到目前为止,我从未遇到过任何问题:-)它不是命令行工具,但我认为您可以一次转换许多文件。

https://stackblitz.com/edit/stackoverflow-mykeys-demo

答案 2 :(得分:0)

最后几天,我使用此网站取得了不错的效果,将您的文件svg删除,并获得了可绘制的xml代码[https://svg2vector.com/][1]