wake-up-neo.com

Android Bildpfad von als Zeichenkette zeichnen

Gibt es eine Möglichkeit, wie ich den Bildpfad aus einem zeichnbaren Ordner in Android als String erhalten kann. Ich brauche das, weil ich meinen eigenen Viewflow implementiere, bei dem ich die Bilder über den Pfad auf der SD-Karte zeige. Ich möchte jedoch ein Standardbild anzeigen, wenn kein Bild angezeigt wird.

Irgendwelche Ideen, wie das geht?

30
Android-Droid

Das sind alles Wege:

String imageUri = "drawable://" + R.drawable.image;

Andere Möglichkeiten, die ich getestet habe

Uri path = Uri.parse("Android.resource://com.segf4ult.test/" + R.drawable.icon);
Uri otherPath = Uri.parse("Android.resource://com.segf4ult.test/drawable/icon");

String path = path.toString();
String path = otherPath .toString();
44
karan

basierend auf einigen der obigen antworten habe ich es ein bisschen improvisiert

erstellen Sie diese Methode und rufen Sie sie auf, indem Sie Ihre Ressource übergeben

Wiederverwendbare Methode

public String getURLForResource (int resourceId) {
    return Uri.parse("Android.resource://"+R.class.getPackage().getName()+"/" +resourceId).toString();
}

Beispielanruf

getURLForResource(R.drawable.personIcon)

vollständiges Beispiel für das Laden eines Bildes

String imageUrl = getURLForResource(R.drawable.personIcon);
// Load image
 Glide.with(patientProfileImageView.getContext())
          .load(imageUrl)
          .into(patientProfileImageView);

sie können die Funktion getURLForResource in eine Util-Datei verschieben und static machen, damit sie wiederverwendet werden kann 

4
mshah

Wenn Sie vorhaben, das Bild aus dem Pfad abzurufen, sollten Sie lieber Assets verwenden, als den Pfad des zu zeichnenden Ordners herauszufinden.

    InputStream stream = getAssets().open("image.png");
    Drawable d = Drawable.createFromStream(stream, null);
2
jmgomez

Ich denke, Sie können es nicht als String bekommen, aber Sie können es als int bekommen, indem Sie die Ressource id erhalten:

int resId = this.getResources().getIdentifier("imageNameHere", "drawable", this.getPackageName());
0
ARN