2012-09-29 63 views
6

Estoy tratando de cargar una imagen png como dibujable desde la tarjeta sd de mi dispositivo. que utilizar la siguiente función pero no funciona:Cargando dibujable desde la tarjeta SD

public Drawable getDrawable() 
{ 
return new BitmapDrawable(imagePath); 
} 

La ruta de la imagen es: mnt/sdcard/MiCarpeta/image.png

la aplicación se bloquea cuando intento llamar a ese método, ¿cómo debe Cargué mi imagen png ubicada en mi tarjeta sd y la echo en un objeto Drawable?

+1

Mira 'decodeFile' http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeFile(java.lang.String) – Doomsknight

+0

@Doomsknight ¿Puedes dar un ejemplo, por favor? Estaba buscando BitmapFromFile pero no pude encontrar ninguna información al respecto. – idish

+0

@Doomsknight Ya veo, ¿así que tendré que lanzar luego el mapa de bits a un objeto dibujable? – idish

Respuesta

13

En realidad, hay un constructor de mapa de bits directamente desde la ruta del archivo. El método que estás utilizando está privado. Proveedores:

Drawable myDrawable = new BitmapDrawable(getResources(), pathName); 

Si esto no funciona, Trate de conseguir un mapa de bits y la creación de un dibujable de ella:

El mapa de bits se puede crear con decodeFile

Usted puede utilizar de esta manera:

Bitmap myBitmap = BitmapFactory.decodeFile(pathName); 

continuación, puede utilizar el mapa de bits para dibujar etc.

para convertir de mapa de bits a un uso dibujable

Drawable myDrawable = new BitmapDrawable(getResources(), myBitmap); 

Tome una mirada Here (Bitmaps) y Here (Bitmap Drawables) para obtener más información.

+0

La primera parte del código debe ser = new BitmapDrawable() ya que es un constructor. –

+0

@JohnJSmith cambiado. :) – Doomsknight

0

me hago tan simple como que

public Drawable getDrawableFromPath(String filePath) { 
    Bitmap bitmap = BitmapFactory.decodeFile(filePath); 
    //Here you can make logic for decode bitmap for ignore oom error. 
    return new BitmapDrawable(bitmap); 
} 
Cuestiones relacionadas