Я создала 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
Комментариев нет:
Отправить комментарий