2011-12-22 12 views
26

¿Hay alguna manera de que pueda obtener la ruta de la imagen de la carpeta dibujable en Android como String? Lo necesito porque implemento mi propio flujo de visualización donde estoy mostrando las imágenes usando su ruta en la tarjeta SD, pero quiero mostrar una imagen predeterminada cuando no hay imágenes para mostrar.Android obtener la ruta de la imagen desde dibujable como cadena

¿Alguna idea de cómo hacer eso?

+1

Al leer [aquí] [ 1] no es posible porque los archivos están dentro de la aplicación. [1]: http://stackoverflow.com/questions/6301493/android-get-path-of-resource –

+0

Esta es la respuesta correcta. http://stackoverflow.com/a/25758286/7795876 – Hangman

Respuesta

-6

De esta manera puede acceder a una imagen particular en su carpeta drawable. Obtener los recursos y especifique la imagen que desea acceder:

Resources res = getResources(); 
Drawable drawable = res.getDrawable(R.drawable.myimage); 

Para obtener más información, consulte Drawable resources.

+0

Eso no responde la pregunta. Parece que sabe cómo obtener la imagen de la carpeta dibujable, pero R.drawable.myimage devuelve un int y busca la ruta de la cadena de la carpeta de recursos. – lagos

-5

Primero compruebe si el archivo existe en la tarjeta SD. Si existe el doesnot archivo en tarjeta SD entonces se puede establecer la imagen por defecto de paso de imágenes usando setImageResource() methodand de la carpeta dibujable

Código de ejemplo

File imageFile = new File(absolutepathOfImage);//absolutepathOfImage is absolute path of image including its name 
     if(!imageFile.exists()){//file doesnot exist in SDCard 

     imageview.setImageResource(R.drawable.defaultImage);//set default image from drawable folder 
     } 
34

Estas formas todos han sido:

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

Otras formas Probé

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(); 
+0

Recibo un error de formato de archivo no admitido con todos ellos. – NarendraJi

+1

dicho patrón devuelve Excepción FileNotFound –

+0

El primer enfoque no funciona, – mshah

0

Si está planeando obtener la imagen de su ruta, es mejor usar Activos en lugar de tratar de descubrir la ruta de la carpeta dibujable.

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

basado en algunas de las respuestas anteriores improvisé un poco

crear este método y lo llaman al pasar su recurso

reutilizable Método

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

Muestra llame al

getURLForResource(R.drawable.personIcon) 

completa ejemplo la carga de imágenes de

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

puede mover el getURLForResource función a un archivo Util y hacerla estática para que pueda ser reutilizado

Cuestiones relacionadas