This正是您所需要的.致帖子的作者@emmaguy.我刚刚添加了Support Library 23.4+的完全支持,它使您能够在运行时停止生成png:
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
如果在您的Activity或Application的onCreate上设置了这一行:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
您不仅可以将SVG用于srcCompat,还可以将其与其他属性(如drawViewLeft,background等)一起用于TextView,ToggleButton等.如果在选择器上使用它也可以工作.
注意:我修改了代码以使用VectorDrawableCompat.create而不是ResourcesCompat.getDrawable.否则它将无效并抛出org.xmlpull.v1.XmlPullParserException:二进制XML文件行#2:无效的可绘制标记向量.
中等帖子内容:
首先,我们为两种小玩意创建属性,因此我们可以改变它们的颜色:
然后,在VectorDrawable中,设置我们想要动态更改的部分以使用这些属性:
android:fillColor="?attr/bauble_round"
android:pathData="...." />
android:fillColor="?attr/bauble_small"
android:pathData="...." />
...
创建主题并设置要使用的颜色:
#db486e
#22c7f7
#fec758
#f22424
在ImageView中使用drawable:
final ContextThemeWrapper wrapper = new ContextThemeWrapper(this, R.style.DefaultScene);
final Drawable drawable = VectorDrawableCompat.create(getResources(), R.drawable.christmas, wrapper.getTheme());
imageView.setImageDrawable(drawable);
而已!当您想要更改颜色时,只需设置不同的主题,您的drawable就会更新.
有关完整样本,请参阅GitHub repo.