2011-09-13 64 views
5

我正在使用Eclipse的Blackberry JDE插件v1.3,我試圖用這個代碼創建一個BitmapField,經常做這樣說:EncodedImage.getEncodedImageResource無法在Eclipse中加載具有相同名稱不同子文件夾的圖像(Blackberry插件)

this.bitmap = EncodedImage.getEncodedImageResource("ico_01.png"); 
this.bitmap = this.bitmap.scaleImage32(
        this.conf.getWidthScale(), this.conf.getHeightScale()); 
this.imagenLoad = new BitmapField(this.bitmap.getBitmap(), this.style); 

它工作正常,沒有錯誤,但現在我有這個組具有相同名稱的圖像,但在不同的子文件夾是這樣的:

enter image description here

我做它比實際上用於展開的要小原因。我不想重命名文件,所以它們都是不同的。我想知道如何訪問不同的子文件夾。 「res/img/on/ico_01.jpg」,「img/on/ico_01.jpg」,「on/ico_01.jpg」是我嘗試失敗的一些例子。

回答

2

看起來EncodedImage.getEncodedImageResource(filename)將檢索filename的第一個實例,而不管它在資源目錄樹中的位置。

如果您在不同目錄中具有相同文件名的圖像(如您所用),這不是非常有用。

我使用的解決方案是創建我自己的方法,可以返回基於路徑和文件名的圖像。

public static Bitmap getBitmapFromResource(String resourceFilename){ 

    Bitmap imageBitmap = null; 

    //get the image as a byte stream 
    InputStream imageStream = getInstance().getClass().getResourceAsStream(resourceFilename); 
    //load it into memory 
    byte imageBytes[]; 
    try { 

     imageBytes = IOUtilities.streamToBytes(imageStream); 
     //create the bitmap 
     imageBitmap = Bitmap.createBitmapFromBytes(imageBytes, 0, imageBytes.length, 1); 

    } catch (IOException e) { 
     Logger.log("Error loading: "+resourceFilename+". "+e.getMessage()); 
    } 

    return imageBitmap; 
} 
相關問題