将SVG文件转换为Android Vector Drawable XML,同时保持组结构

时间:2017-09-27 20:40:27

标签: android svg data-conversion android-vectordrawable

我想将SVG文件转换为Android Vector Drawable XML。我需要SVG的结构。在SVG将多个元素组合在一起的范围内,我需要将该分组也反映在Android Vector Drawable中。

不幸的是,我发现做SVG到Vector Drawable转换的工具试图以一种摆脱文件结构中现有分组的方式最小化文件大小。

是否有一种聪明的方法可以进行转换,使分组树保持原样?

5 个答案:

答案 0 :(得分:18)

你试过Shape Shifter吗?它的意思是让你轻松动画矢量和svgs的程序,但你可以导入你的.svg并直接导出到Vector Drawable。它应该保持你的团队结构(但我没有做出任何承诺,因为我自己没有这么明确地做过)。

答案 1 :(得分:3)

创建一个空白的xml文件。编写除pathdata之外的VectorDrawable的所有属性。在wordpad中打开SVG文件。复制pathdata,然后将其粘贴到您创建的xml文件中。

示例SVG:

<canvas id="canvas" width="1125" height="2436" class="" style="width: 375px; height: 812px;"></canvas>

<img id="restartBtn" src="./images/btn_restart.svg" style="display: inline;">

具有相同路径数据的示例xml文件:

 <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 -174 1280 870">
  <g transform="matrix(1 0 0 -1 0 696)">
   <path fill="currentColor"
d="M540 97.4004l-39 21q-47 30 -77 84q-35 62 -34 129q2.10449 95.0107 62 163q74 84 184.5 84t179.7 -86.4004q59.7998 -73.5996 61.2002 -151.199q1.59961 -88.4004 -44.4004 -153.601q-34 -46.7998 -75.5996 -69.5996l-51.6006 -19.2002q18.2002 -2 37.2002 -2.40039
q78 0.400391 157 0.400391l-12 27q-3 4 -23.7998 -5.7998z" />
  </g>

</svg>

注意:&#34; z&#34;删除了pathdata末尾,并且我也手动重新排列了这些行,以便更好地阅读。

这样你就必须一次手动将SVG转换为xml。

答案 2 :(得分:2)

您可以使用下面的网站链接将SVG文件转换为可绘制矢量 https://svg2vector.com/

答案 3 :(得分:1)

2019年更新:无需使用较旧答案指出的任何外部工具或Heck。 Android Studio的Asset Studio允许将SVG / PSD转换为矢量

  • 右键单击应用程序文件夹->“新矢量资产”
  • 选择单选按钮中的第二个选项以从本地文件创建矢量,如下图所示。
  • 单击文件夹图标以加载本地SVG文件,它将自动将其转换为矢量:

enter image description here

答案 4 :(得分:0)

转到http://inloop.github.io/svg2android,将您的SVG文件及其转换成矢量