Динамически изменять цвет изображения SVG в android
Я знаю, что с помощью сторонней библиотеки можно использовать SVG-изображение в Android. Библиотека, как: svg-android
код для загрузки SVG-изображения выглядит следующим образом:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create a new ImageView
ImageView imageView = new ImageView(this);
// Set the background color to white
imageView.setBackgroundColor(Color.WHITE);
// Parse the SVG file from the resource
SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android);
// Get a drawable from the parsed SVG and set it as the drawable for the ImageView
imageView.setImageDrawable(svg.createPictureDrawable());
// Set the ImageView as the content view for the Activity
setContentView(imageView);
}
он работает нормально. Я могу видеть изображение. Но теперь я хочу изменить цвет SVG изображения во время выполнения. Для этого я попробовал код ниже, Как говорилось в том же описании проекта.
// 0xFF9FBF3B is the hex code for the existing Android green, 0xFF1756c9 is the new blue color
SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android, 0xFF9FBF3B, 0xFF1756c9);
но с этим я не могу видеть изменения в цвет. Поэтому я хотел бы знать, как можно динамически изменять цвет в файле Java.
2 ответов
Я знаю, что это поздно, но у меня также была эта проблема и я смог исправить эту проблему, используя setColorFilter (int color, PorterDuff.Режим) метод.
пример:
imageView.setColorFilter(getResources().getColor(android.R.color.black), PorterDuff.Mode.SRC_IN);
Я понял, в чем проблема.
Проблема с цветовой код я использую в файл SVG.
Это не совсем 0xFF9FBF3B но #9FBF3B
Но во время java-кода Вы должны написать его со значением ARGB (например, 0xFF9FBF3B).
Теперь я обновил его и его работу. Я могу изменить цвет svg-файла с тем же кодом.
надеюсь, что это также поможет другим идентифицировать фактический случай при изменении цвета SVG-изображения во время выполнения.