Contexte
J'ai remarqué qu'Android prend désormais en charge une sorte de dessin vectoriel, via une classe appelée " VectorDrawable " (et également AnimatedVectorDrawable , BTW). Je l'ai trouvé en regardant les nouveautés sur Android-Studio .
Je me demande si ce serait la fin d'avoir à mettre plusieurs fichiers dans plusieurs dossiers ( mdpi
, hdpi
, xhdpi
, etc.). Ce serait génial et pourrait réduire la taille des applications dans certains cas.
Questions
J'aimerais poser quelques questions concernant cette nouvelle classe:
Est-il possible de l'utiliser dans les anciennes versions d'Android, peut-être via une bibliothèque de même la bibliothèque de support de Google?
Je ne sais pas comment cela fonctionne, mais Lollipop peut-il gérer les fichiers SVG? Peut-il faire tout ce qui est réalisable sur les fichiers SVG?
Existe-t-il un exemple / tutoriel / vidéo de son utilisation, autre que la documentation que j'ai trouvée?
la source
s a very usefull tool but I
obtenu un résultat incorrect dans un tel cas et je ne sais pas ce qui ne va pas ... Hmmm, pour une version ultérieure, je souhaite que cet outil notifie le mauvais format ... Si je utilisé des fichiers svg purs avec desRéponses:
MISE À JOUR MARS 2016
Par la mise à jour 23.2.1 de la bibliothèque de support Android , prend en charge les dessins vectoriels et les dessins vectoriels animés. (vous pouvez également utiliser latestone pour le même)
Veuillez mettre à jour la version d'une bibliothèque dans le fichier gradle.
compile 'com.android.support:recyclerview-v7:23.2.1'
Les dessins vectoriels vous permettent de remplacer plusieurs éléments png par un seul graphique vectoriel , défini en XML. Alors que précédemment limité à Lollipop et des dispositifs plus élevés , à la fois
VectorDrawable
etAnimatedVectorDrawable
sont maintenant disponibles grâce à deux nouvelles bibliothèques de soutien soutien-vecteur thermoformable et vecteur-drawable animé. nouvelapp:srcCompat
attribut pour référencer les dessins vectoriels.Vérifiez la source sur github avec quelques exemples d'exemples .
Modifications de la bibliothèque appcompat v7:
Dépendance rétablie sur les ressources vectorielles afin que les développeurs utilisant la bibliothèque appcompat ne soient pas obligés d'utiliser
VectorDrawable
et ses indicateurs de construction associés.la source
compile
déclaration ci-dessus implique que le projet utiliseRecyclerView
ce qui n'est pas toujours le cas.Mise à jour 2 : ils l'activent à nouveau dans la bibliothèque de support 23.4.0:
Vérifiez cette 23.4.0 disponible maintenant
Mise à jour : cela ne fonctionne pas à partir de la version 23.3.0. Vérifiez ici pour plus de détails. Les drawables proxy ne fonctionnent pas.
app:srcCompat
etsetImageResource()
travailler, cependant.La prise en charge de Vector Drawable est disponible dans la bibliothèque de support de la version 23.2 et au-delà. Cependant, pour utiliser correctement ces drawables, ils doivent être référencés indirectement.
La première étape serait de modifier la
AppCompat
version.compile 'com.android.support:appcompat-v7:23.2.0'
Deuxièmement, activez la prise en charge de Vector Drawable. Si vous utilisez le plugin Gradle, 2.0+
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
Autrement
android { defaultConfig { generatedDensities = [] } aaptOptions { additionalParameters "--no-version-vectors" } }
Troisièmement , reportez-vous à la réponse liée .
la source
MenuItem
, ce qui fonctionne très bien.Vous pouvez essayer cette bibliothèque de support . Il prend en charge VectorDrawable et AnimatedVectorDrawable introduit dans Lollipop avec une compatibilité entièrement descendante.
la source
Pour compléter certaines des réponses ici: oui, vous pouvez obtenir un support pour VectorDrawables pré-Lollipop , au moins partiel.
À quel point? Cela dépend - j'ai fait ce diagramme pour vous aider (valable pour Support Library 23.4.0 à - au moins - 25.1.0).
la source
Malheureusement, à ce stade, VectorDrawable et AnimatedVectorDrawable ne sont pas disponibles dans la bibliothèque de support. Mais pour profiter de cette fonctionnalité dans les versions Pre-Lollipop, vous pouvez utiliser le backport non officiel appelé MrVector.
MrVector est disponible dans Github et prend en charge les versions Android 7+.
Du Readme officiel
Pour ajouter une dépendance MrVector, ajoutez la ligne suivante à votre bloc de dépendances build.gradle.
compile 'com.telly:mrvector:0.2.0'
Pour créer le dessinable à partir du XML vectoriel,
J'espère que cela t'aides.
la source
Si vous utilisez VectorDrawable, Android Studio générera automatiquement les fichiers PNG correspondants (basés sur vos fichiers XML) pour les versions Pre-Lollipop.
Notez que ces fichiers PNG générés sont considérés comme BitmapDrawables au lieu de VectorDrawables sur les appareils exécutant une API inférieure à 21 et ne peuvent donc pas être animés ou similaires sur ces appareils.
Pour plus de détails, reportez-vous à la section «rétrocompatibilité»: http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
la source
Lollipop ne peut pas gérer les fichiers SVG sans bibliothèques tierces.
La meilleure solution que j'ai trouvée est la bibliothèque BetterVectorDrawable avec le convertisseur SVG en VectorDrawable .
BetterVectorDrawable est l'implémentation de VectorDrawable pour Android 4.0+ avec un comportement de secours configurable sur Android 5.0+.
SVG to VectorDrawable Converter est le convertisseur par lots d'images SVG en fichiers de ressources XML Android VectorDrawable. Version en ligne
Les liens pointent vers les readmes, qui fournissent suffisamment d'informations sur la façon d'utiliser la bibliothèque et le convertisseur.
la source
Il n'y a pas de VectorDrawables dans la bibliothèque de support pour le moment.
Funkystein a raison - VectorDrawable est similaire à SVG, ne prenant en charge que les fonctionnalités de dessin vectoriel les plus demandées afin qu'Android puisse se concentrer sur les performances. pathData, par exemple, a le même format que la chaîne "d" de SVG.
la source
La bonne nouvelle est que Google a publié la bibliothèque de support Android 23.2 Support Vector Drawables et Animated Vector Drawables!
Mais merci aux personnes qui ont porté cette bibliothèque avant Google!
Guide d'utilisation:
Reportez - vous à "l' âge des vecteurs " par @chrisbanes
la source