Поддержка SVG на Android

Ответы:

56

Самый полный ответ таков:

  • Браузер Android 2.x по умолчанию изначально не поддерживает SVG.
  • Браузеры по умолчанию для Android 3+ ДЕЙСТВИТЕЛЬНО поддерживают SVG.

Чтобы добавить поддержку SVG в версии 2.x платформы, у вас есть два основных варианта:

  1. Установите более функциональный браузер (например, Firefox или Opera Mobile - оба поддерживают SVG)
  2. Используйте полифил JavaScript, который может анализировать SVG и отображать его на холсте HTML5.

Первый вариант подойдет, если вы просто пытаетесь заставить SVG работать для личного использования или ограниченного (контролируемого) набора пользователей. Это не лучший вариант, если вы хотите использовать SVG при нацеливании на большую неконтролируемую базу пользователей.

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

Используя полифил, вы можете визуализировать свой SVG-файл в формате Canav на всех версиях Android 2.x.

Чтобы получить более полный пример этого подхода, вы можете обратиться к этому сообщению в блоге, в котором обсуждается использование полифила canvg для того, чтобы диаграммы Kendo UI DataViz (на основе SVG) работали на Android 2.x. Надеюсь, это поможет!

Тодд
источник
Здравствуйте, я хотел бы знать для ImageView, могу ли я изменить цвет этой среды выполнения изображения svg?
Шрейаш Махаджан
22

Существует новая библиотека с открытым исходным кодом, которая поддерживает загрузку и отрисовку файлов SVG Basic 1.1: https://github.com/pents90/svg-android . Производительность хорошая, поскольку фактический рисунок изначально обрабатывается объектом android.graphics.Picture.

пенсы90
источник
Чтобы его не пропустили, я добавлю здесь комментарий (как упоминалось в ответе @Todd) Android 3+ поддерживает SVG. Таким образом, разработчикам не нужно беспокоиться о библиотеках, если они не беспокоятся о старых устройствах Android.
monotasker
9
В своем ответе я имею в виду библиотеку, которая позволяет разработчику загружать и отображать файлы SVG в своих приложениях. Android 3 + добавлена поддержка браузера для SVG, но не имеет поддержки SVG в его разработчиков API.
pents90
К сожалению, с Android 4.3 у меня не получилось. Образец изображения оказывается пустым. Я использую точный код, который находится на странице руководства в Wiki.
BVB
2
@BVB вам нужно будет отключить аппаратное ускорение, чтобы оно работало на Android 4.x. См .: stackoverflow.com/questions/10384613/… и stackoverflow.com/questions/8771219/…
pents90 07
Спасибо, но разве это не повлечет за собой негативных последствий?
BVB
8

Есть новая библиотека (в стадии активной разработки) androidsvg, которая позволяет включать изображения svg непосредственно в проекты. Его преимущество заключается в том, что он определяет, SVGImageViewчто позволяет включать SVG непосредственно в XML-макет.

Наконец, включить svg в Android очень просто.

Подробнее: сообщение о переполнении стека

Абид Х. Муджтаба
источник
Эта библиотека svg действительно работает. svg-android, и его вилки не применяли стили / css, которые я определил в группе для дочерних элементов группы. Этот делает. Спасибо.
domenukk
1

Я знаю, что мое решение несколько хардкорно, но оно отлично работает, не требует внешних библиотек (по крайней мере, не в вашем окончательном коде) и работает очень быстро.

1) Просто возьмите существующую библиотеку загрузки SVG, такую ​​как, например, svg-android-2 (которая является вилкой svg-android, упомянутой в другом ответе, только с дополнительными функциями и исправлениями): https://code.google.com / п / svg-android-2 /

2) Напишите простое приложение, которое не будет делать ничего, кроме загрузки и отображения изображения SVG.

3) Измените библиотеку загрузки SVG, чтобы она печатала код Java, который создает класс Picture или сохраняет его в переменной String.

4) Скопируйте и вставьте полученный таким образом код Java в приложение, которое вы пишете.

Чтобы получить дополнительную информацию об этой технике и загрузить образец исходного кода, перейдите в мой блог: http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html

Вы можете получить рабочий пример этой техники в Google Play здесь: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample

Вот пример коммерческого приложения, созданного с использованием этой техники (карта метро Милана): https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan

Обратите внимание, как быстро загружается карта и как красиво она выглядит даже при увеличении.

Бартек
источник
1

Ознакомьтесь с возможностью рисования опорных векторов . В Android studio есть инструмент для преобразования файлов SVG в файлы .XML.

при использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton), вы сможете использовать новый атрибут app: srcCompat для ссылки на векторные чертежи (а также любые другие доступные для android: src чертежи):

Начиная с Android Support Library 23.3.0, векторные чертежи поддержки можно загружать только через app: srcCompat или setImageResource ()

Сурья
источник