Nun, ich habe vor kurzem begonnen, VectorDrawables
zu verwenden, und ich dachte, sie würden normalerweise in allen Android-Versionen funktionieren, aber es scheint, dass sie Abstürze in Pre-Lollipop-Geräten verursachen.Wie können Sie VectorDrawables richtig einfärben, damit sie in Pre-Lollipop-Geräten funktionieren?
Die Sache ist, ich bin ein getöntes ziehbar mit diesem Code zu erstellen:
Drawable tintedDrawable = getTintedIcon(
ContextCompat.getDrawable(context, R.drawable.ic_android),
ThemeUtils.darkTheme ? light : dark);
public static Drawable getTintedIcon(Drawable drawable, int color) {
if (drawable != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && drawable instanceof VectorDrawable) {
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
drawable = DrawableCompat.wrap(drawable.mutate());
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
DrawableCompat.setTint(drawable, color);
return drawable;
} else {
return null;
}
}
Nachdem die getönten ziehbar Schaffung ich es mit einem: imageView.setImageDrawable(tintedDrawable);
wie in Lollipop und neuerer Android erwartete Dies funktioniert Versionen, aber es in älteren Versionen nicht.
Nach Chris Banes' Medium post, kann ich entweder: app:srcCompat="@drawable/ic_android"
oder imageView.setImageResource(R.drawable.ic_android);
Aber was kann ich tun, wenn ich es programmatisch tönen müssen? Kann mir jemand helfen und/oder erklären?
Vielen Dank im Voraus.
Ich habe dies bereits in meiner build.gradle
Datei, nur für den Fall:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}