2011-01-31 15 views
6

Mam aplikację dla systemu Android, która zawiera zewnętrzną bibliotekę jar zależnych. Ta biblioteka zewnętrzna zawiera niektóre mapy bitowe png, które chcę pokazać w niektórych widokach w mojej aplikacji.Jak załadować obraz dla systemu Android ImageView ze ścieżki klas?

Przeglądając plik APK mojej aplikacji, mogę znaleźć obrazy w katalogu podkatalogu ("aq \ img") zgodnie z oczekiwaniami.

Jaki jest najlepszy sposób wyświetlania obrazu (wgląd w ścieżkę klasy) w ImageView.

Próbowałem to

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

i ten

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

ale to nie działa (tak naprawdę nie oczekiwać, że będzie to takie proste). Obraz pozostaje pusty.

Dzięki za pomoc!

Pozdrawiam Klaus

Odpowiedz

4

PNG obraz nie jest „zasób System”, ponieważ zasób systemu Android plik jest w regularnym systemie. Obraz, który chcesz, znajduje się w archiwum APK. Będziesz mógł użyć getSystemResourceAsStream, aby otworzyć InputStream do odczytu bajtów archiwum APK, ale nie plik w archiwum, chyba że zaimplementowałeś logikę, aby samemu wyodrębnić plik.

Wystarczy użyć tego:

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

EDIT: Zauważ, że na Androida, to nazwa, która jest przekazywana do getSystemResourceAsStream traktowana jest jako ścieżka do pliku w stosunku do korzenia (/). Ponieważ pliki APK są przechowywane pod numerem /data/app, aby otworzyć plik InputStream do odczytu pliku APK, można użyć ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk"), gdzie "PAKIET" jest pakietem aplikacji.

Powiązane problemy