-Vector图像可以自动进行适配,不需要通过分辨率来设置不同的图片
-Vector图像可以大幅减少图像的体积,同样一张图,用Vector来实现,可能只有PNG的几十分之一
-使用简单,很多设计工具,都可以直接导出SVG图像,从而转换成Vector图像
-功能强大,不用写很多代码就可以实现非常复杂的动画
-成熟、稳定,前端已经非常广泛的进行使用了
具体怎么使用SVG,不多说了,不是重点,重点是使用SVG中的坑,巨坑~
首先,Android5.0发布的SVG,所以向下兼容是一个大问题,不处理这块儿,就会android.content.res.Resources$NotFoundException~
处理这个问题,也要判断你的Gradle版本:
Gradle plugin2.0以上的:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Gradle plugin2.0以下,1.5以上的:
android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}
// Flag to tell aapt to keep the attribute ids around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
首先,这个功能最初是在23.2.0发布,但是我们发现了一些内存使用和配置更新问题,所以我们在23.3.0移除。23.4.0(技术修复版本)我们已经重新添加相同的功能,但在一个您需要手动启用标志。
具体解决办法就是在你使用的类中添加下面代码:
static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);}