2016-07-26 14 views
6

Ich möchte ein Vektorbild (sagen vectorimage.xml) in einem Bild von der SD-Karte anzeigen. Bitte werfen Sie einen Blick darauf, wie dies in Android zu tun ist. Was habe ich schon versucht: -Laden Sie einen Vektor in Bildansicht von SD-Karte

String imagePath = Environment.getExternalStorageDirectory() + "/ folder/productImage.xml"; 

bitmapImage = BitmapFactory.decodeFile(imagePath); 
Drawable bgrImageDrawable = new BitmapDrawable(bitmapImage); 

Der obige Code-Schnipsel funktioniert nicht, da die Bitmap als null kommt.

+0

Sie bekommen Weg in imagepath es überprüft und prüfen Sie auch für die Erlaubnis, in menifest – Vickyexpert

+1

Ja, ich habe diese Arbeit mit jpeg gemacht mit dem gleichen Code-Schnipsel. –

+0

@RamyaBA Auch ich habe das gleiche Problem. –

Antwort

3

Die BitmapFactory kann Vektor-Zeichnungsobjekte nicht laden. Sie müssen die VectorDrawable- oder VectorDrawableCompat-Klasse verwenden. Um einen Vektor zu laden, müssen Sie einen XML-Loader verwenden.

Einige Parser wie der für die Ressourcen benötigen eine vorkompilierte binäre XML-Datei. Sie können sie in der apk-Datei finden, wenn Sie den Vektor in das zeichnende Ressourcenverzeichnis ziehen.

Hier ist ein Beispiel, um es aus den Assets zu laden, sollten Sie in der Lage sein, einen ähnlichen Code für das Laden von der SD-Karte zu verwenden.

final XmlResourceParser parser = context.getAssets().openXmlResourceParser("assets/folder/image.xml"); 
drawable = VectorDrawableCompat.createFromXml(context.getResources(), parser); 

Auf diese Weise muss mindestens Android 5.0

+1

Dies ist kein Problem für die SD-Karte (externer Speicher).! – Jorgesys

+0

Erstellt eine Anfrage dafür: https://issuetracker.google.com/issues/62435069 –

Verwandte Themen