Чи підтримує Android SVG? будь-який приклад?
Чи підтримує Android SVG? будь-який приклад?
Відповіді:
Найповніша відповідь така:
Щоб додати підтримку SVG до версій платформи 2.x, у вас є два основні варіанти:
Перший варіант - це нормально, якщо ви просто намагаєтеся змусити SVG працювати для особистих потреб або для обмеженого (керованого) набору користувачів. Це не найкращий варіант, якщо ви хочете використовувати SVG, орієнтуючись на велику неконтрольовану базу користувачів.
У пізнішому випадку ви хочете скористатися поліфілом. Сьогодні доступно багато бібліотек JavaScript, які можуть переглядати SVG і відображати на полотні. Два приклади:
Використовуючи поліфіл, ви можете візуалізувати SVG у каналі на всіх версіях Android 2.x.
Для більш повного прикладу цього підходу ви можете звернутися до цього допису в блозі, де обговорюється використання polyvill 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, яку спочатку створив спеціально для свого додатка.
Я знаю, що моє рішення дещо жорстке, але воно чудово працює, не вимагає жодних зовнішніх бібліотек (принаймні, не у вашому остаточному коді) і надзвичайно швидке.
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
Зверніть увагу на те, як швидко карта завантажується і наскільки гарною вона виглядає, навіть коли вона збільшена.
Перевірте вектор підтримки, який можна малювати . Студія Android має інструмент для перетворення файлів SVG у файли .XML.
під час використання AppCompat з ImageView (або підкласами, такими як ImageButton та FloatingActionButton), ви зможете використовувати новий атрибут app: srcCompat для посилань на векторні малюнки (а також будь-який інший доступний для android: src):
Починаючи з бібліотеки підтримки Android 23.3.0, векторні файли підтримки можна завантажувати лише через додаток: srcCompat або setImageResource ()
Opera Mobile для Android підтримує svg, а Opera Mini підтримує статичний вміст svg.