web-dev-qa-db-fra.com

SVG Vs PNG sur Android

Quelle est la meilleure façon de gérer les images dans Android. Récemment dans Android Lollipop Nous avions pris en charge le concept SVG (Scalable Vector Graphics). C'est la meilleure façon de travailler avec des images pour prendre en charge toutes les résolutions PNG (placer des images dans des ressources particulièrement dessinables) ou SVG (Petites tailles de fichier qui se compressent bien, s'adapte à n'importe quelle taille sans perdre en clarté (sauf très petite)).

22

Lollipop (API 21) ne prend pas en charge SVG. Il prend en charge un sous-ensemble de fonctionnalités de dessin de chemin SVG via la classe VectorDrawable . Cette classe n'est pas actuellement prise en charge par appcompat, elle n'est donc disponible que sur l'API 21.

Vous aurez toujours besoin d'images PNG pour les anciennes plates-formes, donc le flux de travail idéal est d'avoir des images sources vectorielles que vous exportez en PNG pour divers compartiments DPI et convertissez au format VectorDrawable pour les appareils API 21 en utilisant un projet comme svg2Android .

22
alanv

Vous pouvez utiliser Android Support Library 23.2 ou supérieur. La classe VectorDrawableCompat dans la bibliothèque de support vous permet de prendre en charge VectorDrawable dans Android 2.1 (API niveau 7) et supérieur) Pour cela, vous devez modifier votre fichier build.gradle avant d'exécuter Vector Asset Studio, comme décrit dans Prise en charge de la compatibilité descendante de la bibliothèque.

//For Gradle Plugin 2.0+
 Android {
   defaultConfig {
     vectorDrawables.useSupportLibrary = true
    }
 }

    //For Gradle Plugin 1.5 or below
    Android {
      defaultConfig {
        // Stops the Gradle plugin’s automatic rasterization of vectors
        generatedDensities = []
      }
      // Flag notifies aapt to keep the attribute IDs around
      aaptOptions {
        additionalParameters "--no-version-vectors"
      }
    }

Afin de prendre en charge Vector Drawable et Animated Vector Drawable sur les appareils exécutant Android antérieures à la version 5.0 (API niveau 21), VectorDrawableCompat et AnimatedVectorDrawableCompat sont disponibles via deux nouvelles bibliothèques de support: support-vector-drawable et vectoriels dessinables, respectivement.

Android Studio 1.4 a introduit une prise en charge de compatibilité limitée pour les dessins vectoriels en générant des fichiers PNG au moment de la construction. Cependant, les bibliothèques de support à dessin vectoriel et à dessin vectoriel animé offrent à la fois une flexibilité et une large compatibilité - c'est une bibliothèque de support, vous pouvez donc l'utiliser avec toutes les versions de la plateforme Android retour à Android 2.1 (API niveau 7+). Pour configurer votre application pour utiliser les bibliothèques de support vectorielles, ajoutez l'élément vectorDrawables à votre fichier build.gradle dans le module d'application.

3
Abhishek Joshi

Lollipop ne peut pas gérer les fichiers SVG sans les bibliothèques tierces.

La meilleure solution que j'ai trouvée est la bibliothèque BetterVectorDrawable avec SVG to VectorDrawable Converter .

BetterVectorDrawable est l'implémentation VectorDrawable pour Android 4.0+ avec un comportement de repli configurable sur Android 5.0+.

SVG to VectorDrawable Converter est le convertisseur par lots d'images SVG en Android VectorDrawable XML resource files. Online version

Les liens pointent vers des fichiers Lisez-moi, qui fournissent suffisamment d'informations sur la façon d'utiliser la bibliothèque et le convertisseur.

2
A-student