Отображение файлов SVG на Android
Я хочу создать приложение, отображающее позицию на каком-то плане. Навигация осуществляется через Wi-Fi определенным образом, я сделал это, и теперь у меня есть проблема с отображением плана этажа.
Это может быть в каком-то векторном формате, после некоторого времени серфинга в Интернете я решил, что это должен быть файл svg.
Я нашел некоторые решения, но он не работает для меня!
-
Библиотека svg-android
Есть возможность отображать файлы .svg, но только "простые" файлы. Он отлично работает только для файла в учебнике, но не для любого другого файла .svg
(например, другого файла, который вы создадите с помощью Inkscape).
Итак, я решил, что я проанализирую .svg
файл, сделаю DOM из него, каким-то образом получаю объекты и атрибуты и рисую его через OpenGL ES.
-
Apache Batik
На первый взгляд, очень хорошее решение, но есть проблема. У Android есть некоторые "родные" Apache-библиотеки, и когда я пытаюсь что-то сделать с батиком, он бросает NoClassDefFoundError
, потому что он ищет не в батик-библиотеках, а в "родных" библиотеках.
Конечно, мы можем добавить исходный код в наш проект, взять только парсер batik для файлов .svg
и изменить его каким-то образом, но есть много работы, с таким же успехом мы можем написать собственный парсер.
-
Tiny Line
Нет пробной версии, но если мы см. описание, как это работает для svg файлов и android, мы увидим что есть только растеризация таких файлов и все.
Есть ли какое-либо решение лучше, чем писать собственный парсер?
Кто-нибудь сталкивался с этой проблемой?
Ответы
Ответ 1
Я бы предложил использовать # 1. Не пишите свой собственный парсер. Это будет огромная головная боль.
Насколько детализирован ваш план этажа? android-svg поддерживает SVG довольно хорошо. Он просто не имеет большой поддержки для фильтров или источников света. У вашего SVG не будет таких в них (надеюсь).
Если вы не хотите этого делать, посмотрите на квадратные деревья. Вы можете отобразить огромное изображение и разбить его на квадратный формат, а затем загружать требуемые квадраты.
Ответ 2
Я автор SVG libaray для android, сайт
http://www.vectoroid.com
главное, что отсутствует, это поддержка SVG-дуги, которая в настоящее время исправлена и будет выпущена в ближайшем будущем.
Я ищу отзыв об этом, так как я работаю над ним около года. Поэтому, если у вас есть какие-либо просьбы, сообщите...
Ответ 3
Я использую еще один SVG для Android; кажется, что он относительно новый.
Поддержка GPLv3, CSS2, шрифты, тексты и интервалы, линейные и радиальные градиенты, SVG и SVGZ, поддержка начальной фильтрации, изображения из активов, из веб-и встроенных изображений с кодировкой base64. Самый быстрый из всех, что я пробовал.
Конечно, поддержка фильтров может быть лучше, но кроме этого она работает хорошо и даже отображает SVG файлы на 20 мегабайт.