2017-12-21 1 views

Antwort

2

Ich mag Laden SVG in ImageView von Gridview Adapter, ich tun dies:

Erstens, ImageView unterstützt nicht direkt SVG.

Zweitens scheint Ihr Code eine PNG-Datei, nicht eine SVG-Datei zu laden.

Dritte, file:///android_asset/ ist für WebView. Es funktioniert nicht anderswo im Android SDK.

Sie sollten in Erwägung ziehen, Glide als Image-Loader zu verwenden. Es behandelt file:///android_asset/ und verfügt über Beispielcode zum Transkodieren von SVG-Dateien. Außerdem wird das Laden von Bildern in einem Hintergrund-Thread durchgeführt.

Andernfalls können Sie AssetManager und seine open() Methode verwenden, um eine InputStream auf einen Vermögenswert zu erhalten. Wenn dieses Asset eine PNG-, JPEG- oder WebP-Datei ist, können Sie BitmapFactory.decodeStream() verwenden, um den Stream einzulesen und Ihnen eine Bitmap zurückgeben, die Sie für die ImageView verwenden können. Sie benötigen eine Bibliothek eines Drittanbieters, um etwas mit einem SVG-Asset zu tun. Und Sie müssen dafür sorgen, dass diese Arbeit in einem Hintergrundthread ausgeführt wird, da andernfalls Ihre Benutzeroberfläche einfriert und die Benutzer denken, dass Ihre App blockiert ist.

+0

wenn ich mein SVG in Android XML umwandle? –

+1

@ ArMo372: Ich bin mir nicht sicher, was Sie damit meinen. Wenn Sie meinen, den Vektor-Asset-Assistenten in Android Studio zu verwenden, um Vektor-Zeichen-XML zu erstellen, habe ich nie versucht, das von einem Asset zu laden. Es funktioniert sicherlich als "zeichnende" Ressource. – CommonsWare

Verwandte Themen