Страницы

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

пятница, 24 января 2020 г.

SVG-изображение с градиентом

#android #svg


Я создала SVG-изображение в Inkscape и пыталась импортировать его в Android-проект.
Для рендеринга SVG-изображений я использовала библиотеку svg-android.jar, и вот как
выглядел код для отображения SVG-изображения в ImageView:

SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.counter);
Drawable drawable = svg.createPictureDrawable();
ImageView imageView = (ImageView)findViewById(R.id.counter_image);
imageView.setImageDrawable(drawable);


Но изображения вообще не было видно. После добавления строки:

imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);


изображение стало видимо, но все прямоугольники, в заливке которых был градиент,
при запуске приложения оказались залиты чёрным цветом. Вот логи:


  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: sodipodi:namedview
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: inkscape:grid
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: metadata
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: rdf:RDF
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: cc:Work
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: dc:format
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: dc:type
  
  SVGAndroid﹕ UNRECOGNIZED SVG COMMAND: dc:title
  
  SVGAndroid﹕ Didn't find shader, using black: linearGradient4279
  
  SVGAndroid﹕ Didn't find shader, using black: linearGradient4295
  
  SVGAndroid﹕ Didn't find shader, using black: linearGradient4315
  
  SVGAndroid﹕ Didn't find shader, using black: linearGradient4315-8


Подскажите, как правильно рендерить SVG с градиентом для Android?
    


Ответы

Ответ 1



fill(s) or stroke(s) which uses url() (gradients and patterns are not supported in Android) После конвертации градиент выглядит примерно так(в лучшем случае): fillColor="url(#SVGID_1_)" для Android(точней для VectorDrawable) этого ничего не значит, и всё что он может залить(fill) полностью градиент, поэтому пока никак. Последняя новость от 24.02.16 они добавили support lib VectorDrawable

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

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