当使用
Android> = 5.0时,
Drawable d = getResources().getDrawable(R.drawable.icon)
正确解析XML并返回有效的drawable.但是当使用新的Vector Drawable Support Library(版本23.4,Gradle 2.1.2)时,此代码在Android 4下崩溃.
android.content.res.Resources$NotFoundException
…
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
解决方案是使用
Drawable d = VectorDrawableCompat.create(getResources(),R.drawable.icon,null);
但是如果资源不是向量资源,则会崩溃:
java.io.FileNotFoundException: Corrupt XML binary file
那么,什么代码必须被使用,而不是第一行,以便它适用于Android 4和Android 6以及矢量和非矢量绘图.在所有情况下,这一行在Android 5.0项目中使用?支持库文章没有提到执行此迁移的方法
解决方法
我找到了解决方案.
您需要在您的活动中手动添加支持VectorDrawable.
在你的活动中尝试这个:
static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); }
您应该查看这个blog entry了解更多信息.