Est-il possible d'obtenir le chemin de l'image à partir du dossier pouvant être dessiné dans Android as String? J'ai besoin de cela parce que j'implémente mon propre flux de vue où je montre les images en utilisant leur chemin sur la carte SD, mais je veux montrer une image par défaut lorsqu'il n'y a pas d'image à montrer.
Des idées comment faire cela?
Ce sont tous des moyens:
String imageUri = "drawable://" + R.drawable.image;
Autres moyens que j'ai testés
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();
sur la base de certaines des réponses ci-dessus je l'improvise un peu
créer cette méthode et l'appeler en passant votre ressource
Méthode réutilisable
public String getURLForResource (int resourceId) {
return Uri.parse("Android.resource://"+R.class.getPackage().getName()+"/" +resourceId).toString();
}
Exemple d'appel
getURLForResource(R.drawable.personIcon)
complete exemple de chargement d'image
String imageUrl = getURLForResource(R.drawable.personIcon);
// Load image
Glide.with(patientProfileImageView.getContext())
.load(imageUrl)
.into(patientProfileImageView);
vous pouvez déplacer la fonction getURLForResource dans un fichier Util et la rendre static afin qu'elle puisse être réutilisée
Si vous envisagez d'extraire l'image de son chemin, il est préférable d'utiliser Actifs plutôt que d'essayer de déterminer le chemin du dossier pouvant être dessiné.
InputStream stream = getAssets().open("image.png");
Drawable d = Drawable.createFromStream(stream, null);
Je pense que vous ne pouvez pas l'obtenir sous la forme String
mais vous pouvez l'obtenir sous la forme int
en obtenant la ressource id
:
int resId = this.getResources().getIdentifier("imageNameHere", "drawable", this.getPackageName());