1、xml里面引用

在根布局加上:xmlns:app=http://schemas.android.com/apk/res-auto

然后:

app:srcCompat="@drawable/ic_backspace" />

2、在代码里面设置

1
2
3
ImageView img.setDrawableR.drawable.ic_backspace);

ImageView img.setImageResource(R.drawable.ic_backspace);

3、自定义属性里面包含svg图片

需要使用TintedTypedArray来解析

4、不能使用android:background来引用svg图片

如果要设置background可以使用方式2通过代码来设置

5、Glide不支持直接引用svg图片

6、Android 5.0以下,如果不继承AppCompatActivity,获取svg图片方法

1
2
3
4
5
VectorEnabledTintResources resources =

new VectorEnabledTintResources(getApplicationContext(), getResources());

Drawable drawable = resources.getDrawable(R.drawable.ic_3s);

7、selector里可以用svg图片

8、渐变色的崩溃

崩溃范围:Android API 24以下,使用drawableLeft等。

原因:SVG的渐变色只能用aapt标签包含,需要放在drawable-v24包中,如果依然放在drawable包中,没有问题。但高版本gradle使用aapt2进行资源打包,在低于24的手机上会因为找不到资源崩溃。但之前使用aapt进行资源打包的项目没有问题,因为此时生成了对应的png图。

特别说明:设置backgroundsrcCompat不会有问题,但需要注意是否显示正常。

布局无法使用 background 和 srcCompat 代替时,那么可以使用以下代码动态获取 drawable 设置:

AppCompatResources.getDrawable(context, resId)