Браузер Android 2.x по умолчанию изначально не поддерживает SVG.
Браузеры по умолчанию для Android 3+ ДЕЙСТВИТЕЛЬНО поддерживают SVG.
Чтобы добавить поддержку SVG в версии 2.x платформы, у вас есть два основных варианта:
Установите более функциональный браузер (например, Firefox или Opera Mobile - оба поддерживают SVG)
Используйте полифил JavaScript, который может анализировать SVG и отображать его на холсте HTML5.
Первый вариант подойдет, если вы просто пытаетесь заставить SVG работать для личного использования или ограниченного (контролируемого) набора пользователей. Это не лучший вариант, если вы хотите использовать SVG при нацеливании на большую неконтролируемую базу пользователей.
В последнем случае вы захотите использовать полифил. Сегодня доступно множество библиотек JavaScript, которые могут обрабатывать SVG и отображать их на холсте. Вот два примера:
Здравствуйте, я хотел бы знать для ImageView, могу ли я изменить цвет этой среды выполнения изображения svg?
Шрейаш Махаджан
22
Существует новая библиотека с открытым исходным кодом, которая поддерживает загрузку и отрисовку файлов SVG Basic 1.1: https://github.com/pents90/svg-android . Производительность хорошая, поскольку фактический рисунок изначально обрабатывается объектом android.graphics.Picture.
Чтобы его не пропустили, я добавлю здесь комментарий (как упоминалось в ответе @Todd) Android 3+ поддерживает SVG. Таким образом, разработчикам не нужно беспокоиться о библиотеках, если они не беспокоятся о старых устройствах Android.
monotasker
9
В своем ответе я имею в виду библиотеку, которая позволяет разработчику загружать и отображать файлы SVG в своих приложениях. Android 3 + добавлена поддержка браузера для SVG, но не имеет поддержки SVG в его разработчиков API.
pents90
К сожалению, с Android 4.3 у меня не получилось. Образец изображения оказывается пустым. Я использую точный код, который находится на странице руководства в Wiki.
Есть новая библиотека (в стадии активной разработки) androidsvg, которая позволяет включать изображения svg непосредственно в проекты. Его преимущество заключается в том, что он определяет, SVGImageViewчто позволяет включать SVG непосредственно в XML-макет.
Эта библиотека svg действительно работает. svg-android, и его вилки не применяли стили / css, которые я определил в группе для дочерних элементов группы. Этот делает. Спасибо.
Я только что выложил репозиторий Github и репозиторий примеров для моей собственной библиотеки TPSVG, которую я изначально создал специально для своего приложения.
Я знаю, что мое решение несколько хардкорно, но оно отлично работает, не требует внешних библиотек (по крайней мере, не в вашем окончательном коде) и работает очень быстро.
1) Просто возьмите существующую библиотеку загрузки SVG, такую как, например, svg-android-2 (которая является вилкой svg-android, упомянутой в другом ответе, только с дополнительными функциями и исправлениями): https://code.google.com / п / svg-android-2 /
2) Напишите простое приложение, которое не будет делать ничего, кроме загрузки и отображения изображения SVG.
3) Измените библиотеку загрузки SVG, чтобы она печатала код Java, который создает класс Picture или сохраняет его в переменной String.
4) Скопируйте и вставьте полученный таким образом код Java в приложение, которое вы пишете.
при использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton), вы сможете использовать новый атрибут app: srcCompat для ссылки на векторные чертежи (а также любые другие доступные для android: src чертежи):
Начиная с Android Support Library 23.3.0, векторные чертежи поддержки можно загружать только через app: srcCompat или setImageResource ()
Ответы:
Самый полный ответ таков:
Чтобы добавить поддержку SVG в версии 2.x платформы, у вас есть два основных варианта:
Первый вариант подойдет, если вы просто пытаетесь заставить SVG работать для личного использования или ограниченного (контролируемого) набора пользователей. Это не лучший вариант, если вы хотите использовать SVG при нацеливании на большую неконтролируемую базу пользователей.
В последнем случае вы захотите использовать полифил. Сегодня доступно множество библиотек JavaScript, которые могут обрабатывать SVG и отображать их на холсте. Вот два примера:
Используя полифил, вы можете визуализировать свой SVG-файл в формате Canav на всех версиях Android 2.x.
Чтобы получить более полный пример этого подхода, вы можете обратиться к этому сообщению в блоге, в котором обсуждается использование полифила canvg для того, чтобы диаграммы Kendo UI DataViz (на основе SVG) работали на Android 2.x. Надеюсь, это поможет!
источник
Существует новая библиотека с открытым исходным кодом, которая поддерживает загрузку и отрисовку файлов SVG Basic 1.1: https://github.com/pents90/svg-android . Производительность хорошая, поскольку фактический рисунок изначально обрабатывается объектом android.graphics.Picture.
источник
В настоящее время некоторые люди, включая меня, работают над этим самостоятельно.
Вы можете найти рабочее решение в этих статьях:
Android. ImageView с поддержкой SVG.
Android ImageView и Drawable с поддержкой SVG
источник
Есть новая библиотека (в стадии активной разработки) androidsvg, которая позволяет включать изображения svg непосредственно в проекты. Его преимущество заключается в том, что он определяет,
SVGImageView
что позволяет включать SVG непосредственно в XML-макет.Наконец, включить svg в Android очень просто.
Подробнее: сообщение о переполнении стека
источник
Android поддерживает векторные чертежи: https://developer.android.com/reference/android/graphics/drawable/VectorDrawable.html
И существует конвертер Android SVG в VectorDrawable: http://inloop.github.io/svg2android/
источник
Я бегло просмотрел https://code.google.com/p/androidsvg/ . Пока что отображались все файлы svg, которые я на него закидывал. Выглядит многообещающе.
источник
Я только что выложил репозиторий Github и репозиторий примеров для моей собственной библиотеки TPSVG, которую я изначально создал специально для своего приложения.
https://github.com/TrevorPage/TPSVG_Android_SVG_Library
https://github.com/TrevorPage/TPSVG_Example1
источник
Я знаю, что мое решение несколько хардкорно, но оно отлично работает, не требует внешних библиотек (по крайней мере, не в вашем окончательном коде) и работает очень быстро.
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
Обратите внимание, как быстро загружается карта и как красиво она выглядит даже при увеличении.
источник
Ознакомьтесь с возможностью рисования опорных векторов . В Android studio есть инструмент для преобразования файлов SVG в файлы .XML.
при использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton), вы сможете использовать новый атрибут app: srcCompat для ссылки на векторные чертежи (а также любые другие доступные для android: src чертежи):
Начиная с Android Support Library 23.3.0, векторные чертежи поддержки можно загружать только через app: srcCompat или setImageResource ()
источник
Firefox для Android поддерживает SVG.
источник
Opera Mobile для Android поддерживает svg, а Opera Mini поддерживает статический svg-контент.
источник