Подтвердить что ты не робот

Отображение файлов 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, мы увидим что есть только растеризация таких файлов и все.

Есть ли какое-либо решение лучше, чем писать собственный парсер? Кто-нибудь сталкивался с этой проблемой?

4b9b3361

Ответ 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 мегабайт.