安卓支持库:无论是否是矢量,都可以独立获取
2022-09-01 20:04:43
当使用安卓>= 5.0时,
Drawable d = getResources().getDrawable(R.drawable.icon)
正确分析 XML 并返回有效的可绘制对象。但是,当使用新的 Vector Drawable 支持库(版本 23.4,Gradle 2.1.2)时,此代码在 Android 4 下崩溃。
android.content.res.Resources$NotFoundException
...
原因:org.xmlpull.v1.XmlPullParserException: Binary XML 文件行 #2: 无效的可绘制标记向量
解决方案是使用
Drawable d = VectorDrawableCompat.create(getResources(), R.drawable.icon, null);
但是,如果资源不是矢量资源,则会崩溃:
java.io.FileNotFoundException: 损坏的 XML 二进制文件
那么必须使用什么代码来代替第一行,以便它与Android 4和Android 6以及矢量和非矢量可绘制对象一起使用 - 例如,在所有情况下,这行都用于Android 5.0 +项目?支持库文章未提及执行此迁移的方法