Utilizar un SVG como fondo dibujable en Android

Estoy intentando utilizar una imagen SVG (creada usando Inkscape y guardada como SVG normal) como fondo para mi aplicación. Estoy tratando de hacer esto usando la biblioteca svg-android . Tengo un archivo llamado background.svg en res/raw . Mi código se ve así:

 SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.background); Drawable pictureDrawable = svg.createPictureDrawable(); Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap); LinearLayout backgroundLayout = (LinearLayout) findViewById(R.id.background); bitmapDrawable.setTileModeX(Shader.TileMode.REPEAT); backgroundLayout.setBackgroundDrawable(bitmapDrawable); 

Sin embargo, cuando mi aplicación se inicia, no aparece nada como el fondo (que no sea el color de fondo del diseño). Mi archivo xml de diseño es el siguiente:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#aacceeff" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/background" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> > </LinearLayout> </LinearLayout> 

ACTUALIZAR

Parece que hay un problema con mi SVG. Puede ser debido al hecho de que no se admiten todas las funciones.

El proyecto svg-android no se ha actualizado en más de un año y no soporta SVG1.2 por lo que svgs generados por Inkscape (open-source) no son compatibles.

Sin embargo, hay una nueva biblioteca android svg: AndroidSVG

Están en la versión 1.2 y el trabajo en 1.3 está actualmente en curso. Incluyendo sólo la biblioteca jar uno puede incluir programaticamente svgs en aplicaciones de Android. Casi todas las características svg se incluyen. Todavía estoy por encontrar un svg que no pude incorporar usando esta biblioteca.

Si incluye androidsvg desde el origen (hg clone) en su proyecto como un módulo de biblioteca, obtiene la clase SVGImageView que es una extensión de ImageView por la que puede agregar svg a su proyecto utilizando los archivos de diseño xml como:

 <com.caverock.androidsvg.SVGImageView xmlns:svg="http://schemas.android.com/apk/res-auto" android:layout_width="100dp" android:layout_height="50dp" svg:svg="filename.svg"/> 

Eso es. Todo lo que necesitas hacer es colocar filename.svg en la carpeta de activos y podrás ir.

Soporta API 8 y superior. Hubo algunos problemas al usarlo para API <11 pero pude arreglar estos. Los posteé como problemas en la página del proyecto y los autores respondieron en cuestión de minutos. Se han añadido a la próxima revisión. Si tienes algún problema, mira los problemas resueltos, en caso de que no esté disponible para contestar preguntas aquí.

PS La documentación y los ejemplos en la página del proyecto son excelentes y la biblioteca es una alegría para trabajar. Android y svg son una poderosa mezcla.

He intentado un ejemplo con el siguiente código y muestra el fondo correctamente:

 LinearLayout root = (LinearLayout) findViewById(R.id.background); SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android_body); Drawable pictureDrawable = svg.createPictureDrawable(); root.setBackgroundDrawable(pictureDrawable); 

¿Ha intentado con otro svg?

  • Decodificación de la imagen SVG a mapa de bits
  • Teniendo problema en el dispositivo verdadero usando la imagen del vector en androide. SVG-android
  • ¿Es posible mostrar svgz en Android?
  • No se muestra SVG en QML en Android
  • ¿Hay algún lite SVG espectador para Android?
  • Uso de archivos SVG con libgdx
  • Svg archivos de representación en android
  • Imagen SVG no visible en android 3.0+ con el mismo código
  • App fallos aleatorios con señal fatal 7 (SIGBUS), código 2 o señal fatal 11 (SIGSEGV), código 1
  • Conversión SVG - forma eficiente de almacenar objetos de Trayectoria, Pintura y Matriz?
  • ¿Cómo tono este PictureDrawable?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.