2009-12-19 37 views
16

Tengo un archivo .gif dentro de la carpeta assets como this assets/Files/android.gif. cuando intento abrir el archivo se lanza una excepción en la segunda líneaAbrir un archivo de la carpeta assets en android

AssetManager mngr=getAssets(); 
InputStream is2=mngr.open("Files/android.gif"); 

Entonces, ¿es que yo estoy tratando de abrir un archivo de imagen a pesar de que el mismo código funciona si intento abrir un archivo de texto? ¿cuál puede ser el problema aquí?

Respuesta

30

Estas líneas están trabajando perfectly--

InputStream assetInStream=null; 

try { 
    assetInStream=getAssets().open("icon.png"); 
    Bitmap bit=BitmapFactory.decodeStream(assetInStream); 
    img.setImageBitmap(bit); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if(assetInStream!=null) 
    assetInStream.close(); 
} 

Si la imagen es muy grande, entonces usted debe escalar la imagen antes de la decodificación en mapa de bits. See How to display large image efficiently

+3

La secuencia de AFIK debe cerrarse después del uso – ruX

+0

@ruX: sí el problema correctamente apuntado – Sameer

1

No sé si las cosas han cambiado o no, pero yo tenía una aplicación en Android 1.1 que abrió iconos a continuación, los muestra en una vista y lo hice así:

BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value)); 
Bitmap bitmap = BitmapFactory.decodeStream(buf); 
1

Creo que la prefería La forma de hacerlo es colocar su imagen en el directorio res/drawable. Entonces puede obtener un Drawable como este:

Drawable d = Resources.getSystem().getDrawable(R.drawable.android); 
4

Sospecho que está recibiendo quejas sobre excepción no controlada tipo IOException. Si ese es el caso, debe poner la llamada a mgr.open en un bloque try-catch para manejar la excepción que puede ocurrir al recuperar el objeto InputStream.

AssetManager mngr = getAssets(); 
try { 
    InputStream is2 = mngr.open("Files/android.gif"); 
} catch (final IOException e) { 
    e.printStackTrace(); 
} 
Cuestiones relacionadas