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?

  • Biblioteca de AndroidFillableLoaders de JorgeCastilloPrz - Problema de SVGPath
  • ¿Por qué imageView.setLayerType (View.LAYER_TYPE_SOFTWARE, null); Y <aplicación android: hardwareAccelerated = "false" tienen un efecto diferente?
  • Errores de importación de elementos de Android Studio Vector: Etiquetas no compatibles
  • El archivo SVG se ejecuta correctamente en Emulator pero da error en Real Device?
  • Uso de archivos SVG con libgdx
  • ¿Puede Android Dibujos definidos en XML contienen una ruta de acceso?
  • Mapa de imagen de Android. - mostrar un archivo .svg y usarlo como un mapa de imágenes (zonas de toque)
  • SVG a Android forma
  • App fallos aleatorios con señal fatal 7 (SIGBUS), código 2 o señal fatal 11 (SIGSEGV), código 1
  • Cómo utilizar la imagen SVG en ImageView
  • ¿Por qué mi SVG no se carga en Vector Asset Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.