¿Cuál es la forma más fácil de usar imágenes SVG en Android?

3 minutos de lectura

avatar de usuario
Código de sentido común

He encontrado una gran cantidad de bibliotecas para usar imágenes SVG en Android y evitar la frustrante creación de diferentes resoluciones y la eliminación de archivos para cada resolución. Esto se vuelve muy molesto cuando la aplicación tiene muchos íconos o imágenes.

¿Cuál sería un proceso paso a paso de la biblioteca más fácil de usar para usar imágenes SVG en Android?

También uso Android Studio y ilustrador por generar mis iconos e imágenes.

  • Posible duplicado de ¿Cuáles son las mejores prácticas para usar íconos SVG en Android?

    – serv-inc

    11 de mayo de 2017 a las 7:14

  • Video corto sobre cómo importar svg en Android Studio: youtube.com/watch?v=8e3I-PYJNHg

    – Zohab Alí

    7 de octubre de 2018 a las 6:01


avatar de usuario
Sandeep Pareek

Prueba esto

ingrese la descripción de la imagen aquí

próximo paso –

ingrese la descripción de la imagen aquí

y ahora edite el nombre de la imagen o el icono y guárdelo.

ingrese la descripción de la imagen aquí

  • Paso a paso me gusta, salva mi vida!

    – Chris Ho

    24 de febrero a las 1:21

  • Cuando intento agregar archivos SVG, recibo un error que dice: Error: el nombre del archivo debe terminar con .xml o .png

    – Sujay ONU

    12 de agosto de 2017 a las 16:41

  • Por que es imageView static? Veo una enorme bandera roja de insectos aquí. SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain); SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder); rainSVG ¿la referencia contiene thunderImageView?

    – DSchmidt

    25 de agosto de 2017 a las 12:13


  • @DSchmidt que es solo un puntero a la vista de imagen. Si fuera mi código, haría que toda la clase fuera estática con un método llamado LoadSVG. y como puede ver, no tiene sentido cargar datos en variables privadas a las que no se puede acceder.

    – Nasreddine Galfout

    30 de junio de 2020 a las 18:53

Puede usar la biblioteca Coil para cargar svg. Simplemente agregue estas líneas en build.gradle

// ... Coil (https://github.com/coil-kt/coil)
implementation("io.coil-kt:coil:0.12.0")
implementation("io.coil-kt:coil-svg:0.12.0")

Luego agregue una función de extensión

fun AppCompatImageView.loadSvg(url: String) {
    val imageLoader = ImageLoader.Builder(this.context)
        .componentRegistry { add(SvgDecoder([email protected])) }
        .build()

    val request = ImageRequest.Builder(this.context)
        .crossfade(true)
        .crossfade(500)
        .data(url)
        .target(this)
        .build()

    imageLoader.enqueue(request)
}

Luego llame a este método en su actividad o fragmento

your_image_view.loadSvg("your_file_name.svg")

avatar de usuario
Pedro Mortensen

En lugar de agregar bibliotecas, lo que aumenta su APK tamaño del archivo, le sugiero que convierta SVG a dibujable usando Android SVG a VectorDrawable.

Y añadir vectorDrawables.useSupportLibrary = true en gradle.

avatar de usuario
Pedro Mortensen

1. Debe convertir SVG a XML para usarlo en un proyecto de Android.

1.1 Puedes hacer esto con Android SVG a VectorDrawablepero no es compatible con todas las funciones de SVG, como algunos degradados.

1.2 Puedes convertir a través de Estudio Androidpero puede usar algunas características que solo admiten API 24 y superior que causan bloqueos de su aplicación en dispositivos más antiguos.

Y añadir vectorDrawables.useSupportLibrary = true en el gradle archivo y usarlo así:

<android.support.v7.widget.AppCompatImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />

2. Usa esta biblioteca SVG-Android que apoya estas características

Agregue este código en la clase de aplicación:

public void onCreate() {
    SVGLoader.load(this)
}

Y usa el SVG así:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_android_red"/>

  • ¿Por qué usar un cargador SVG cuando tienes el enfoque directo de @Pallavi? ¿Hay alguna ventaja en usar un cargador?

    – Taslim Oseni

    29 de noviembre de 2018 a las 6:32

  • @Taslim, las funciones admitidas son más de lo habitual. puede ver las funciones compatibles y ver.

    – sajad abbasi

    29 de noviembre de 2018 a las 18:56

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad