tool studio error compat android background svg

studio - Usar un SVG como fondo dibujable en Android



vector android studio (2)

Intenté un ejemplo utilizando el siguiente código y se 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);

¿Has probado con otro svg?

Intento usar una imagen SVG (creada usando Inkscape y guardada como SVG simple) 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 se inicia mi aplicación, no aparece nada como 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 deberse al hecho de que no todas las funciones son compatibles.


El proyecto svg-android no se ha actualizado en más de un año y no es compatible con SVG1.2, por lo que los svgs generados por Inkscape (código abierto) no son compatibles.

Sin embargo, hay una nueva biblioteca de svg de Android: AndroidSVG

Están en la versión 1.2 y el trabajo en 1.3 está actualmente en progreso. Incluyendo solo la biblioteca de tarros, uno puede incluir programáticamente svgs en aplicaciones de Android. Casi todas las funciones svg están incluidas. Todavía tengo que encontrar un svg que no pude incorporar utilizando esta biblioteca.

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

<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 necesita hacer es colocar filename.svg en la carpeta de activos y listo.

Es compatible con API 8 y superior. Hubo algunos problemas al usarlo para API <11, pero pude solucionarlos. Los publiqué como problemas en la página del proyecto y los autores respondieron en minutos. Se han agregado a la próxima revisión. Si tiene algún problema, mire los problemas resueltos, en caso contrario, estoy disponible para responder preguntas aquí.

PD La documentación y los ejemplos en la página del proyecto son excelentes y la biblioteca es un placer trabajar con ella. Android y svg son una mezcla poderosa.