原因:
SVG 使用 XML 格式定义图形,标准SVG的根节点为<svg>,但是在Android中需要通过Vector实现对svg的支持,根节点为<vector>,所以我们使用svg图首先需要对svg进行转换
直接复制粘贴svg文件到drawable文件下,代码如下
<?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 t="1692016273964"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="1187"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="48"
height="48">
<path
d="M900.3 342.9c-8.1 3.5-17.4-0.1-21.2-8.1-5.3-10.8-11-21.5-17.2-31.8-40.5-67.4-100.9-122.7-171.5-157-7.9-3.9-11.5-13.1-8-21.1 3.7-8.4 13.6-12.3 21.9-8.3 77.2 37.3 141.1 95.8 185.5 169.8 6.8 11.3 13.1 23 18.8 34.9 3.9 8.1 0 18-8.3 21.6zM935.7 495.5c-9 0-16.3 7.3-16.3 16.3 0 224.2-182.4 406.5-406.5 406.5S106.4 736 106.4 511.8s182.4-406.5 406.5-406.5c9 0 16.3-7.3 16.3-16.3s-7.3-16.3-16.3-16.3c-242.1 0-439.1 197-439.1 439.1s197 439.1 439.1 439.1S952 753.9 952 511.8c0-9-7.3-16.3-16.3-16.3z"
fill="#161616"
p-id="1188"></path>
<path
d="M610.5 105.3m-16.3 0a16.3 16.3 0 1 0 32.6 0 16.3 16.3 0 1 0-32.6 0Z"
fill="#161616"
p-id="1189"></path>
<path
d="M919.5 414.2m-16.3 0a16.3 16.3 0 1 0 32.6 0 16.3 16.3 0 1 0-32.6 0Z"
fill="#161616"
p-id="1190"></path>
<path
d="M431.6 365.4c-9 0-16.3 7.3-16.3 16.3v260.2c0 9 7.3 16.3 16.3 16.3s16.3-7.3 16.3-16.3V381.7c0-9-7.3-16.3-16.3-16.3zM594.2 365.4c-9 0-16.3 7.3-16.3 16.3v260.2c0 9 7.3 16.3 16.3 16.3s16.3-7.3 16.3-16.3V381.7c0-9-7.3-16.3-16.3-16.3z"
fill="#161616"
p-id="1191"></path>
</svg>
根标签是svg,即使右侧可以成功预览图标,但是依旧有爆红
由于我们通常需要一次性转换多个svg,因此推荐使用一个插件来实现svg到Vector的转换
插件名:SVG2VectorDrawable
Intellij Platform插件,通过其可以完成从svg文件到Android VectorDrawable的自动化转换
特性
- 图形化界面
- 自动解析当前Project,如果当前Project为Android Project,则会列出所有Module
- 支持将SVG解析为多种dpi的VectorDrawable
- 支持SVG的transform属性
- 支持批量转换指定目录内的所有svg文件
下载后重启IDE
双击shift查找
勾选Batch可以将整个文件夹下的svg图标转换为Vector
可以选择转换后将Vector存放在哪个mudule的drawable文件夹下
点击generate就可以自动生成
单个转换
可以看到格式已经转换成功了,但是res文件夹下的文件命名规则是
must contain only [a-z0-9_.]
修改后就没有报错了