Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Android Java SVG залить по тапу форму цветом под пальцем

Возникла не сложная, но непонятная для меня проблема. Возможно, данный вопрос уже подымался, что было бы очевидно, но ответа я не нашел.
Есть векторное изображение (SVG), которое мы конвертируем в xml и в последующем отображаем его в ImageView. Вопрос заключается в том, как по тапу я могу поставить нужному мне , атрибут fillColor из java-кода.


Ответ

Может что то типа такого:
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 я крашу в два разных цвета:

Комментариев нет:

Отправить комментарий