一后豫、Android5.0以下引用SVG崩潰的解決方案
1、xml里面引用
在根布局加上:xmlns:app=http://schemas.android.com/apk/res-auto
然后:
app:srcCompat="@drawable/ic_backspace"?/>
2惫霸、在代碼里面設(shè)置:
ImageView?img.setDrawable(R.drawable.ic_backspace);
ImageView?img.setImageResource(R.drawable.ic_backspace);
3芝加、自定義屬性里面包含svg圖片:
需要使用TintedTypedArray來解析
4、不能使用android:background來引用svg圖片
如果要設(shè)置background可以使用2方式通過代碼來設(shè)置
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標(biāo)簽包含斤讥,需要放在drawable-v24包中抹剩,如果依然放在drawable包中,沒有問題蓉坎。但高版本gradle使用aapt2進(jìn)行資源打包蛉艾,在低于24的手機(jī)上會因為找不到資源崩潰。但之前使用aapt進(jìn)行資源打包的項目沒有問題助琐,因為此時生成了對應(yīng)的png圖泰演。
特別說明:設(shè)置background、srcCompat不會有問題垃喊,但需要注意是否顯示正常猾普。
布局無法使用?background?和?srcCompat?代替時,那么可以使用以下代碼動態(tài)獲取?drawable?設(shè)置:
AppCompatResources.getDrawable(context, resId)