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

Поддерживает ли Android поддержку SVG? любой пример?

Ответ 1

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

  • Браузер по умолчанию Android 2.x не поддерживает SVG.
  • браузеры Android 3+ по умолчанию поддерживают SVG.

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

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

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

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

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

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

Ответ 2

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

Ответ 4

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

Наконец, включение svg в android является простым.

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

Ответ 6

Я кратко рассмотрел https://code.google.com/p/androidsvg/. Пока показывали все svg файлы, на которые я их набросал. Выглядит многообещающе.

Ответ 8

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

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

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

Ответ 9

Firefox для Android поддерживает SVG.

Ответ 10

Opera Mobile для Android поддерживает svg и Opera Mini поддерживает статический контент svg.

Ответ 11

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

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

Как и в Android Support Library 23.3.0, поддержка векторных чертежей может быть загружена только через приложение: srcCompat или setImageResource()