在Android应用开发中,矢量图相比位图有更好的适配性和更小的体积,Android系统原生支持的矢量图格式是Vector Drawable XML,而设计师输出的资源多为SVG格式,因此需要将SVG转换为Vector Drawable XML格式才能正常使用。

为什么需要转换SVG到Vector Drawable XML
SVG是通用的矢量图形格式,但是Android的渲染引擎无法直接解析SVG文件的标签和属性,Vector Drawable是Android专门定义的矢量图格式,基于XML实现,能够完美适配Android的渲染逻辑,支持在不同分辨率的设备上无损缩放,不会出现模糊问题。
常用转换方法
1. 使用Android Studio自带转换功能
Android Studio提供了内置的SVG转Vector Drawable功能,操作步骤如下:
- 右键点击项目的
res/drawable目录 - 选择
New-Vector Asset - 在弹出的窗口中选择
Local file (SVG, PSD)选项 - 点击
Path右侧的浏览按钮,选择本地的SVG文件 - 调整矢量图的名称和大小参数,点击
Next完成转换
转换后的Vector Drawable XML文件会直接生成在drawable目录下,示例代码如下:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z" />
</vector>
2. 使用在线转换工具
如果没有安装Android Studio,也可以使用在线转换工具完成转换,操作逻辑比较简单:
- 打开在线转换网站,上传本地的SVG文件
- 选择输出格式为Android Vector Drawable
- 点击转换按钮,下载生成的XML文件
- 将下载的XML文件复制到项目的drawable目录下即可使用
3. 使用命令行工具svg2vector
对于需要批量转换的场景,可以使用开源的svg2vector命令行工具,首先需要安装工具:
# 安装svg2vector工具 npm install -g svg2vector
转换单个文件的命令如下:
# 转换单个SVG文件为Vector Drawable svg2vector -i input.svg -o output.xml
批量转换目录下所有SVG文件的命令如下:
# 批量转换目录下的所有SVG文件 svg2vector -i ./svg_dir -o ./xml_dir
转换注意事项
转换过程中可能会遇到一些问题,需要注意以下几点:
- SVG文件中如果包含Android Vector Drawable不支持的标签或属性,转换后可能会丢失部分效果,需要手动调整pathData或者属性值
- 转换后的矢量图默认大小可能不符合项目需求,可以修改
android:width和android:height属性调整显示尺寸 - 如果SVG文件中有多个图层,转换后可能会合并为一个path,需要确认显示效果是否符合预期
- Vector Drawable支持的填充颜色格式为
#AARRGGBB或者#RRGGBB,如果SVG中的颜色格式不符合,需要手动调整
Vector Drawable的使用方式
转换完成后,就可以在布局文件或者代码中直接使用矢量图资源:
在布局文件中引用:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_converted_vector" />
在代码中引用:
// 获取矢量图资源 Drawable drawable = getResources().getDrawable(R.drawable.ic_converted_vector, null); imageView.setImageDrawable(drawable);
如果需要兼容Android 5.0以下的系统,还需要在项目的build.gradle文件中添加矢量图支持配置:
android {
defaultConfig {
// 开启矢量图向后兼容
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
// 引入支持库
implementation 'androidx.appcompat:appcompat:1.6.1'
}
SVGVector_DrawableAndroid矢量图转换修改时间:2026-07-23 23:06:25