2011-01-31 15 views
6

Tengo una aplicación de Android que contiene una biblioteca externa depend jar. Esta biblioteca externa contiene algunos png-bitmaps que quiero mostrar en algunas ImageViews en mi aplicación.Cómo cargar imágenes para Android ImageView desde classpath?

Mirando dentro del archivo apk de mi aplicación puedo encontrar las imágenes en un subdirectorio ("aq \ img") como se esperaba.

¿Cuál es la mejor manera de mostrar una imagen (idea del camino de clases) en un ImageView.

yo probamos este

ImageView imgView01 = (ImageView) findViewById(R.id.imageView1); 
    Drawable d = Drawable.createFromPath("aq/img/sample.png"); 
    imgView01.setImageDrawable(d); 

y esto

InputStream is = ClassLoader 
      .getSystemResourceAsStream("sample.png"); 
    Bitmap bm = BitmapFactory.decodeStream(is); 
    imgView01.setImageBitmap(bm); 

pero no funcionaba (que realmente no esperaba que fuera así de simple). La imagen permanece vacía.

¡Gracias por la ayuda!

Saludos Klaus

Respuesta

4

La imagen PNG no es un "recurso del sistema" porque un recurso del sistema en Android es un archivo en el sistema de archivos normal. La imagen que desea está dentro del archivo APK. Usted podría usar getSystemResourceAsStream para abrir un InputStream para leer los bytes del archivo APK, pero no un archivo dentro del archivo, a menos que haya implementado la lógica para extraer el archivo usted mismo.

Utilice simplemente este:

InputStream is = getClass().getClassLoader().getResourceAsStream("aq/img/sample.png"); 

EDIT: Tenga en cuenta que en Android, el nombre que se pasa a getSystemResourceAsStream es tratada como una ruta de acceso al archivo relativo a la raíz (/). Debido a que los APK se almacenan en /data/app, luego para abrir un InputStream para leer el APK, puede usar ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk"), donde "PAQUETE" es el paquete de su aplicación.

Cuestiones relacionadas