Возникла не сложная, но непонятная для меня проблема. Возможно, данный вопрос уже подымался, что было бы очевидно, но ответа я не нашел.
Есть векторное изображение (SVG), которое мы конвертируем в xml и в последующем отображаем его в ImageView. Вопрос заключается в том, как по тапу я могу поставить нужному мне
Ответ
Может что то типа такого:
DrawableCompat.setTint(imageView.getDrawable(), ContextCompat.getColor(context, R.color.yourColor));
или такого:
public class TintIcon {
private static int[][] states = new int[][] {
new int[] { android.R.attr.state_pressed},
new int[] { android.R.attr.state_focused},
new int[] { android.R.attr.state_selected},
new int[] { -android.R.attr.state_selected}
};
private static int[] colors = new int[] {
Color.parseColor("#4EA62E"), // primary color
Color.parseColor("#4EA62E"), // primary color
Color.parseColor("#4EA62E"), // primary color
Color.parseColor("#868686") // grey icon
};
private static int[] colorsSwitch = new int[] {
Color.parseColor("#D7B00F"), // yellow color
Color.parseColor("#D7B00F"), // yellow color
Color.parseColor("#D7B00F"), // yellow color
Color.parseColor("#868686") // grey icon////
};
private static ColorStateList myColorStateList = new ColorStateList(states,colors);
private static ColorStateList myColorStateListSwitch = new ColorStateList(states,colorsSwitch);
public static Drawable tintIconToGreenColor(Context context, Drawable icon) {
if (icon != null) {
icon = DrawableCompat.wrap(icon).mutate();
DrawableCompat.setTintList(icon, myColorStateList );
DrawableCompat.setTintMode(icon, PorterDuff.Mode.SRC_IN);
}
return icon;
}
public static Drawable tintIconYellowColor(Context context, Drawable icon) {
if (icon != null) {
icon = DrawableCompat.wrap(icon).mutate();
DrawableCompat.setTintList(icon, myColorStateListSwitch );
DrawableCompat.setTintMode(icon, PorterDuff.Mode.SRC_IN);
}
return icon;
}
}
Этих два метода tintIconToGreenColor и tintIconYellowColor красать иконку в зеленый и желтый цвет. Я его использую что бы на серой иконке менять цвет заливки рисунка.
Вот такую иконку в .png я крашу в два разных цвета:
Комментариев нет:
Отправить комментарий