Страницы

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

вторник, 19 марта 2019 г.

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?


Ответ

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

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

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