Динамически изменять цвет изображения 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-изображения во время выполнения.