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?
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();
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
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);
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());