Динамическое изменение цвета изображения SVG в android



Я знаю, что используя стороннюю библиотеку, можно использовать SVG image В 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.
672   2  

2 ответов:

Я знаю, что это немного поздно, но у меня также была эта проблема, и я смог исправить эту проблему с помощью setColorFilter(int color, PorterDuff.Mode mode) Метод.

Пример:

imageView.setColorFilter(getResources().getColor(android.R.color.black), PorterDuff.Mode.SRC_IN);

Я понял, в чем проблема. Проблема заключается в цветовом коде, который я использую в файле svg. Это не совсем 0xFF9FBF3B но #9FBF3B
Но во время java-кода Вы должны написать его со значением ARGB (например, 0xFF9FBF3B). Я обновил его, и теперь он работает нормально. Я могу изменить цвет файла svg с тем же кодом.

Надеюсь, что это также поможет другим идентифицировать фактический случай, изменяя цвет изображения SVG во время выполнения.

Comments

    Ничего не найдено.