2016-09-23 2 views

Répondre

1

Avez-vous besoin de soutenir VectorDrawables sur les appareils plus anciens? Si oui, alors je ne pense pas que ce soit actuellement possible. AFAIK la bibliothèque de support vous permettra seulement d'assigner un VectorDrawable s'il s'agit d'une ressource (par exemple via setImageResource()).

http://android-developers.blogspot.co.nz/2016/02/android-support-library-232.html

L'alternative serait d'utiliser SVGs à la place et utiliser l'une des bibliothèques SVG pour Android. Cependant, si vous avez seulement besoin de prendre en charge Lollipop et plus tard, il devrait être possible d'utiliser le processus comme indiqué ci-dessous. Bien que je ne l'ai pas essayé moi-même.

Tout d'abord, récupérez le fichier VectorDrawable en tant que flux. À titre d'exemple, voir this question. Vous devrez ensuite créer une instance XmlPullParser.

xppXmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
XmlPullParser xpp = factory.newPullParser(); 

ensuite dire l'analyseur sur le flux

xpp.setInput(input, null); 

Ensuite, vous pouvez obtenir un VectorDrawable en appelant inflate(). Passez l'instance de l'analyseur.

VectorDrawable vd = new VectorDrawable(); 
vd.inflate(getResources(), xpp, null, null); 

Ensuite, vous devriez être en mesure d'affecter le drawable à votre ImageView.

imageView.setImageDrawable(vd); 

Bonne chance!