當與Android> = 5.0的工作,的Android支持庫:getDrawable獨立如果載體或不
Drawable d = getResources().getDrawable(R.drawable.icon)
正確解析XML返回有效繪製。但是當使用新的Vector Drawable Support Library(版本23.4,Gradle 2.1.2)時,此代碼在Android 4下崩潰。
android.content.res.Resources $ NotFoundException
...
造成的:org.xmlpull.v1.XmlPullParserException:二進制XML文件行#2:無效的繪製標籤矢量
該解決方案將是使用
Drawable d = VectorDrawableCompat.create(getResources(), R.drawable.icon, null);
但這會崩潰,如果資源不是矢量資源:
java.io.FileNotFoundException:損壞的XML二進制文件
所以不得不來代替在第一行的是什麼代碼,以便它適用於Android 4和Android 6以及矢量和非矢量繪圖 - 例如在所有情況下,這條線用於Android 5.0+項目中?支持庫文章沒有提及執行此遷移的方法
我認爲他們期待開發商鋒線資源是否知道是一個可繪製的矢量或不是。這對於應用程序開發人員來說是合理的,對於圖書館開發人員來說更是如此關閉袖口,我會嘗試'VectorDrawableCompat',如果出現'FileNotFoundException',則回退到'getDrawable()'。 – CommonsWare