【Android】SVG的坑

一、Android5.0以下引用SVG崩溃的解决方案

1、xml里面引用

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

然后:

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

2、在代码里面设置:

ImageView img.setDrawable(R.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图片方法:

VectorEnabledTintResources resources =

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

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

7、selector里可以用svg图片

二、渐变色的崩溃

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

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

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

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

AppCompatResources.getDrawable(context, resId)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容