Android peut-il utiliser un SVG directement comme drawable ?
Une ressource VectorDrawable utilise le vocabulaire XML d’Android : un élément vector avec un viewport, des dimensions d’affichage et des tracés de dessin. Renommer logo.svg en logo.xml ne traduit pas ces éléments. Le SVG utilise d’autres noms pour les remplissages, les contours et les transformations, et accepte des fonctions que cet export refuse volontairement.
Utilisez le convertisseur SVG en Android pour une icône d’interface simple ou une illustration en aplats. Il accepte un SVG que vous importez ou l’un de vos propres résultats débloqués. Si vous partez d’une image bitmap, vectorisez d’abord l’image, vérifiez les contours, puis exportez. La conversion des ressources ne lance pas de nouvelle vectorisation et ne lève pas l’obligation de déblocage d’un résultat existant.
Un petit exemple à reproduire
Enregistrez ce triangle sous triangle.svg et importez-le. Choisissez le nom de ressource ic_triangle et un plus grand côté de 24 dp.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill="#fa643c" d="M12 2L22 22H2Z"/>
</svg>
Le XML téléchargé contient un viewport de 24 × 24, des dimensions d’affichage de 24 dp et un seul tracé. Son remplissage orange devient la couleur Android #fffa643c, avec l’alpha en premier. Placez ic_triangle.xml dans app/src/main/res/drawable/. Dans une mise en page, utilisez android:src="@drawable/ic_triangle" ; dans le code de l’application, utilisez l’identifiant de ressource drawable correspondant.
Le viewport décrit la géométrie. Les dimensions en dp décrivent la taille d’affichage prévue du drawable. Un SVG rectangulaire garde ses proportions : choisir un plus grand côté de 48 dp ne l’étire pas en carré. Le nom de la ressource commence par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des tirets bas.
Qu’est-ce qui survit à la conversion ?
Notre convertisseur prend en charge les tracés et les formes géométriques de base, les couleurs unies, l’opacité du remplissage, les styles de contour compatibles, et les remplissages nonzero comme even-odd. Il aplatit les transformations prises en charge dans les coordonnées des tracés. C’est à cause du remplissage even-odd que cet export vise l’API 24 et les versions ultérieures. Il ne crée pas d’enveloppe de compatibilité pour les applications plus anciennes.
Le texte, les dégradés, les masques, les détourages, les images intégrées et les effets demandent une préparation différente. Convertissez le texte en contours dans votre éditeur vectoriel. Convertissez les contours transformés en formes si la transformation étire leurs axes différemment. L’opacité de groupe peut modifier les formes qui se chevauchent : l’export la refuse donc plutôt que d’appliquer l’opacité séparément et de changer l’image. Le résultat liste tout élément dangereux qui a été retiré.
Pour un visuel détaillé, un export PNG peut être une ressource plus adaptée. Un très grand nombre de tracés peut coûter du temps de rendu, même quand le fichier est techniquement vectoriel. Simplifiez les points inutiles et testez à la taille réelle à l’écran.
Vérifier le résultat dans l’application
Compilez la ressource dans Android Studio et examinez-la sur des fonds clairs et sombres. Vérifiez les trous à l’intérieur des lettres, les traits fins, les couleurs voulues et la transparence. Comparez l’original et le drawable en petite taille, là où les petits détails comptent le plus. Une compilation XML réussie confirme que la ressource est acceptée ; le rendu sur l’appareil et les réglages de teinte de votre app déterminent tout de même son apparence finale.
Pour une icône de lanceur, utilisez le générateur d’icônes d’app. Les icônes de lanceur ont des exigences de densité et de calques adaptatifs qu’un simple export de drawable ne fournit pas.