2010-10-25 24 views
32

Estoy trabajando en una aplicación que muestra la base de datos de imágenes de otra persona. Las imágenes que tienen son todas vectoriales y se pueden convertir a cualquier formato, sin embargo mantenerlas en formato vectorial es bueno porque los usuarios probablemente querrán acercarse más.Gráficos vectoriales en Android

La pregunta es, ¿existe una forma incorporada de mostrar un gráfico vectorial en Android? El formato no importa, podemos convertir. El formato actual que estamos considerando es PDF, pero dado que no hay soporte de PDF nativo, tendría que hacer algo bastante complejo para que funcione (por ejemplo, integrando poppler en mi aplicación a través del NDK). La alternativa es simplemente convertir los gráficos vectoriales en un formato más simple (JPG, GIF), pero prefiero evitar eso.

+0

Si convierte a JPG/GIF, ¿no pierde la capacidad de vector? – user432209

+1

Ese es exactamente el problema y por qué quiero evitar eso. –

Respuesta

20

Echa un vistazo a svg-android - es una biblioteca relativamente nueva y solo es compatible con SVG Basic, pero es la biblioteca utilizada para dibujar Androidify. Hay ejemplos en la página de inicio sobre cómo obtener un Drawable de un SVG que parece ser lo que está buscando.

4

TinyLive SVG proporciona un visor SVG para Android. No lo he probado, así que no tengo idea si es bueno o no.

Reading this bug request parece que SVG podría ser activado en el navegador - y por lo que presumiblemente WebView también - en pan de jengibre. Pero dado que esta es una característica posible en futuras versiones, probablemente ahora no sea de mucha ayuda.

7

Creating Vector Drawables.


Sé que esta pregunta es viejo, pero me encontré con este mismo requisito y estoy feliz de saber que Android 5.0 es compatible con dibujables vector ahora. Puede usar <vector> datos de etiqueta y ruta para crear vectores dibujables y funciona como un encanto en API-21. Aquí hay un ejemplo que produce una imagen vectorial en forma de corazón.

<!-- res/drawable/heart.xml --> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="256dp" 
    android:width="256dp" 
    android:viewportWidth="32" 
    android:viewportHeight="32"> 

    <!-- draw a path --> 
    <path android:fillColor="#8fff" 
     android:pathData="M20.5,9.5 
        c-1.955,0,-3.83,1.268,-4.5,3 
        c-0.67,-1.732,-2.547,-3,-4.5,-3 
        C8.957,9.5,7,11.432,7,14 
        c0,3.53,3.793,6.257,9,11.5 
        c5.207,-5.242,9,-7.97,9,-11.5 
        C25,11.432,23.043,9.5,20.5,9.5z" /> 
</vector> 

El único problema que tuvimos hasta ahora es que, no se incluye en las librerías de soporte, y por lo que no puede hacer uso de ellos en las API inferiores. Lo maravilloso es que, incluso puedes animar vectores arrastrables ahora. Aquí hay un ejemplo.

<!-- res/drawable/vectordrawable.xml --> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="64dp" 
    android:width="64dp" 
    android:viewportHeight="600" 
    android:viewportWidth="600"> 
    <group 
     android:name="rotationGroup" 
     android:pivotX="300.0" 
     android:pivotY="300.0" 
     android:rotation="45.0" > 
     <path 
      android:name="v" 
      android:fillColor="#000000" 
      android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> 
    </group> 
</vector> 

Más información acerca de la animación vectorial dibujable here.

3

Mire la lib BetterVectorDrawable junto con SVG to VectorDrawable Converter.

BetterVectorDrawable es la implementación VectorDrawable para Android 4.0 o superior con un comportamiento de repliegue configurable en Android 5.0+.

SVG a VectorDrawable Converter es el convertidor por lotes de imágenes SVG a Android VectorDrawable archivos de recursos XML. La versión en línea es here.

Los enlaces apuntan a las lecturas, que proporcionan suficiente información sobre cómo usar la lib y el convertidor.

0

Un descarado autoencadenado, pero ¿podría estar interesado en ribbon-vg? Es básico, puro Java y rápido; confiando en técnicas de vanguardia para descargar la CPU en el proceso de renderizado.

Cuestiones relacionadas