Підтримка 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 у каналі на всіх версіях Android 2.x.

Для більш повного прикладу цього підходу ви можете звернутися до цього допису в блозі, де обговорюється використання polyvill canvg для створення діаграм Kendo UI DataViz (на основі SVG) на Android 2.x. Сподіваюся, це допоможе!


Привіт, я хотів би знати для 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 розробника.
пенти 90

На жаль, це не працювало для мене, на жаль, з Android 4.3. Зразок зображення закінчується порожнім. Я використовую точний код, який є на сторінці підручника у Вікі.
BVB

2
@BVB вам потрібно буде вимкнути апаратне прискорення, щоб воно працювало на Android 4.x. Див: stackoverflow.com/questions/10384613 / ... і stackoverflow.com/questions/8771219 / ...
pents90

Дякую, але чи це не матиме негативних наслідків деінде?
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 / p / svg-android-2 /

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

3) Змініть бібліотеку завантаження SVG, щоб вона надрукувала код Java, який створює клас Picture або зберігає його у змінній String.

4) Скопіюйте отриманий таким чином код Java у додаток, яке ви пишете.

Щоб отримати більше інформації про цю техніку та завантажити зразок вихідного коду, перейдіть до мого блогу: http://androiddreamrefied.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 має інструмент для перетворення файлів SVG у файли .XML.

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

Починаючи з бібліотеки підтримки Android 23.3.0, векторні файли підтримки можна завантажувати лише через додаток: srcCompat або setImageResource ()



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.