2011-01-31 6 views
6

Ho un'app per Android che contiene una libreria esterna di jar dipendente. Questa libreria esterna contiene alcune immagini png-bitmap che voglio mostrare su alcune ImageView nella mia applicazione.Come caricare l'immagine per Android ImageView da classpath?

Guardando all'interno del file apk della mia applicazione posso trovare le immagini in una sottodirectory ("aq \ img") come previsto.

Qual è il modo migliore per mostrare un'immagine (informazioni sul percorso di classe) su un ImageView.

Ho provato questo

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

e questo

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

ma non ha funzionato (non mi aspettavo che fosse così semplice). L'immagine rimane vuota.

Grazie per l'aiuto!

saluti Klaus

risposta

4

L'immagine PNG non è una "risorsa di sistema" perché una risorsa di sistema su Android è un file nel file system regolare. L'immagine che desideri si trova nell'archivio APK. Potresti utilizzare getSystemResourceAsStream per aprire un InputStream per leggere i byte dell'archivio APK, ma non un file all'interno dell'archivio a meno che non hai implementato la logica per estrarre il file da solo.

semplicemente utilizzare questo:

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

EDIT: Si noti che su Android, il nome che viene passato getSystemResourceAsStream viene trattato come un percorso del file relativo alla radice (/). Poiché gli APK sono archiviati in /data/app, per aprire uno InputStream per la lettura dell'APK, è possibile utilizzare ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk"), dove "PACKAGE" è il pacchetto della tua app.