2011-09-13 7 views
5

Sto usando il plug-in Blackberry JDE v1.3 per Eclipse e sto provando questo codice per creare un campo Bitmap e ho sempre fatto in questo modo:EncodedImage.getEncodedImageResource non riesce a caricare l'immagine con lo stesso nome diversa sottocartella in Eclipse (plug-in 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); 

funziona benissimo senza gli errori, ma ora ho questa serie di immagini con lo stesso nome, ma in diverse sottocartelle in questo modo:

enter image description here

ho fatto è più piccolo di quanto non sia in realtà per l'esplosione ragioni di Anatory. Non vorrei rinominare i file in modo che siano tutti diversi. Mi piacerebbe sapere come accedere alle diverse sottocartelle. "res/img/on/ico_01.jpg", "img/on/ico_01.jpg", "on/ico_01.jpg" sono alcuni esempi che ho provato e fallito.

risposta

2

sembra che EncodedImage.getEncodedImageResource(filename) sarà recuperare la prima istanza di filenameindipendentemente da dove esso si trova nella directory di risorse albero.

Questo non è molto utile se si hanno le immagini con lo stesso nome di file in directory diverse (come avete).

La soluzione che ho usato è di creare il mio metodo che può restituire un'immagine basata su un percorso e un nome di file.

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; 
}