2011-01-31 61 views
6

我有一個Android應用程序,它包含一個外部的依存庫jar庫。這個外部庫包含一些png位圖,我想在我的應用程序中的某些ImageView上顯示。如何從classpath加載Android ImageView的圖像?

尋找我的應用程序的apk文件的內部,我可以像預期的那樣在子目錄(「aq \ img」)中找到圖像。

什麼是在ImageView上顯示圖像(瞭解類路徑)的最佳方式。

我想這

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

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

,但它沒有工作(我真的不希望它是簡單)。 圖像保持空白。

感謝您的幫助!

問候克勞斯

回答

4

PNG圖像不是一個「系統資源」,因爲在Android的系統資源是在常規文件系統中的文件。您想要的圖像位於APK存檔中。您將能夠使用getSystemResourceAsStream來打開InputStream,以讀取APK存檔的字節,但不是存檔內的文件,除非您實施了自行提取文件的邏輯。

只需使用這樣的:

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

編輯:需要注意的是,在Android上傳遞給getSystemResourceAsStream名稱作爲相對於根(/)文件的路徑處理。由於APK存儲在/data/app中,因此要打開用於閱讀APK的InputStream,可以使用ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk"),其中「PACKAGE」是應用程序的包。