2012-07-18 85 views
21

Quiero crear una aplicación que muestre la posición en un plano. La navegación se está implementando a través de Wi-Fi de cierta manera, lo he hecho y ahora tengo un problema para mostrar el plano de planta.Mostrar archivos SVG en Android

Podría estar en formato vectorial, después de navegar por Internet durante algún tiempo he decidido que debe ser archivo svg. ¡Encontré algunas soluciones, pero no funciona para mí!

  1. Library svg-android

    Existe la posibilidad de visualizar archivos .svg, pero sólo los archivos "simples". Funciona bien solo para el archivo en el tutorial, pero no para ningún otro archivo .svg (por ejemplo, algún otro archivo, que creará con Inkscape).

    Así que decidí que voy a analizar el archivo .svg, hacer DOM desde allí, de alguna manera obtener objetos y atributos y dibujarlo a través de OpenGL ES.

  2. Apache Batik

    A primera vista, muy buena solución, pero hay un problema. Android tiene algunas librerías apache "nativas" y cuando intento hacer algo con batik, arroja NoClassDefFoundError, porque no está buscando en bibliotecas batik, sino en bibliotecas "nativas".

    Por supuesto, podemos agregar el código fuente en nuestro proyecto, tomar solo el analizador batik para archivos .svg y editarlo de alguna manera, pero hay mucho trabajo, con el mismo éxito podemos escribir nuestro propio analizador.

  3. Tiny Line

    No hay versión de prueba, pero si vamos a see description de cómo funciona para archivos SVG y androide, veremos que sólo hay rasterización de dichos archivos y eso es todo.

¿Hay alguna solución mejor que escribir el propio analizador? ¿Alguien ha encontrado este problema?

+0

Otra opción - http://stackoverflow.com/a/30213340/3325759 –

Respuesta

8

Sugeriría usar # 1. No escriba su propio analizador. Va a ser un gran dolor de cabeza.

¿Qué tan detallado debe ser su plano de planta? android-svg es compatible con SVG bastante bien. Simplemente no tiene un gran soporte para filtros o fuentes de luz. Tu SVG no va a tener esos en ellos (espero).

Si no quieres hacer eso, mira dentro de los árboles cuádruples. Puede renderizar una imagen enorme y dividirla en un formato tipo quadtree y solo cargar los cuadros cuádruples que necesite.

+0

¡Muchas gracias por la respuesta! –

+0

no creo "androidsvg" existe es o "[androidsvg] (https://code.google.com/p/androidsvg/)" o "SVG-androide". – Christian

+0

puedo recomendar "androidsvg" como una biblioteca más completa que "SVG-androide". [código de Google] (https://code.google.com/p/androidsvg/) (ir fuera de línea en unos pocos meses a partir de la publicación) y [Bitbucket] (https://bitbucket.org/paullebeau/androidsvg/ descargas) enlaces. La licencia aparece en los archivos de origen y parece ser Apache 2.0. – William

4

He escrito un libaray SVG para Android es el sitio web http://www.vectoroid.com

lo principal que falta es el apoyo de arco SVG esto está fijado actualmente, y estará en un comunicado en un futuro próximo.

Estoy buscando comentarios al respecto, ya que he estado trabajando en ello durante aproximadamente un año. Entonces, si tiene alguno, por favor, dígame ...

+0

Gracias por su esfuerzo para escribir esta biblioteca. Me gustaría utilizar su biblioteca en mi aplicación, pero no estoy seguro de si se ajusta a mis requisitos o no. Me gustaría escribir una aplicación de dibujo un poco libre que guarda las rutas SVG dibujadas por el usuario e interactivamente necesita verificar dónde está el dedo del usuario actual y ejecutar algunos códigos en consecuencia. ¿Es posible con tu biblioteca? –

1

He usando otro SVG for Android; parece que es relativamente nuevo.

GPLv3, compatibilidad con CSS2, fuentes, textos y tramas, degradados lineales y radiales, SVG y SVGZ, soporte de filtrado inicial, imágenes de activos, desde web e imágenes codificadas en base64 en línea. El más rápido de todos los que he probado.

Por supuesto, los filtros de apoyo podría ser mejor, pero, salvo esto funciona bien e incluso muestra 20 megabytes archivos SVG.