Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
На данный момент Android не поддерживает векторные изображения SVG, хотя недавно появилась возможность использовать вектор в виде VectorDrawable. Но энтузиасты пытаются портировать код для работы с вектором в виде отдельных библиотек. Сейчас активность несколько спала, и библиотеки практически не обновляются.
Одной из самых известных библиотек для работы с вектором является svg-android, которую можно найти на ГитХабе - svgandroid.
Поддерживается векторный формат SVG. Желательно использовать версию SVG Basic 1.1, который доступен при сохранении в Adobe Illustrator. Могут подойти и изображения, сделанные в Inkscape. Но в любом случае надо проверять вживую. Например, когда я скачал исходник кота в AI и сохранил его в нужном формате SVG Basic 1.1, то сначала изображение не выводилось на экран. Пришлось в Иллюстраторе открыть файл и удалять различные лишние слои, чтобы очистить файл от мусора. На всякий случай скажу, что сам по себе формат SVG - это XML-файл. Уже существуют несколько спецификаций, а популярность SVG растёт и используется даже в вебе.
Вернёмся к библиотеке. Скачиваем файл библиотеки и добавляем его в папку libs.
Добавляем в разметку компонент ImageView и пишем простой код:
ImageView imageView = (ImageView) findViewById(R.id.vector_image_view);
imageView.setBackgroundColor(Color.WHITE);
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
// указываем ресурс
SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.cats);
// выводим изображение
Drawable drawable = svg.createPictureDrawable();
imageView.setImageDrawable(drawable);
Без метода setLayerType() у меня ничего не выводилось. На форумах пишут, что на старых устройствах можно обойтись без этой строчки или использовать параметр View.LAYER_TYPE_HARDWARE.
Также библиотека позволяет не только выводить изображения на экран, но и рисовать. Можете создать свой векторный редактор.
Особых надежд на библиотеку возлагать не стоит, сложную графику с эффектами она не обработает и вы не увидите ничего. Кроме того, библиотека давно уже обновлялась.
Существует также форк этой библиотеки, который имеет расширенную функциональность. Мне даже не пришлось менять код. Удалил первую библиотеку, вставил вторую, а все импорты классов остались прежними. При этом, часть SVG-файлов, которые не выводились при работе первой библиотеки, стали выводиться при использовании второй библиотеки.
Если обе предыдущие библиотеки уже давно не обновлялись и похоже заброшены, то ещё одна библиотека пока самая поздняя и, возможно, более функциональна.
Домашний адрес библиотеки - AndroidSVG