Blackberry res carpeta de nombres convención

Creé una función estática como esta.

public static Bitmap Bitmap(String path) { Bitmap bitmap = Bitmap .getBitmapResource(Display.getWidth() + "/" + path); System.out.println(Display.getWidth() + "" + path); return bitmap; } 

Sin embargo, cuando llamé así,

 private Bitmap download = Config_GlobalFunction.Bitmap("btn_download.png"); 

La salida me dio que FRIDG could not find 320/btn_download.png .

En mi carpeta res , obtuve una carpeta que era img y en el interior había 6 carpetas diferentes que eran 160 , 240 , 320 , 360 , 480 y 640 .

¿Cómo puedo llamar a la imagen de la carpeta correcta en función de Display.getWidth() ?

Es posible tener una jerarquía de carpetas en la carpeta /res pero debe usar getClass().getResourceAsStream(path) lugar de Bitmap.getBitmapResource() para crear su recurso.

Este ejemplo crea un bitmap a partir de la ruta /res/img/hi_res/ui/action_arrow.png :

 String imagePath = "/img/hi_res/ui/action_arrow.png"; InputStream is = getClass().getResourceAsStream(imagePath); byte[] imageBytes = IOUtilities.streamToBytes(is); Bitmap b = Bitmap.createBitmapFromBytes(imageBytes, 0, imageBytes.length, 1); 

Es un poco más de trabajo, pero significa que puede tener una buena estructura de carpetas, en lugar de cientos de imágenes agrupadas en una sola carpeta.

He tenido problemas con esto antes. Las aplicaciones de BlackBerry no parecen estar bien configuradas para manejar archivos de recursos en subcarpetas. Es decir, puede almacenar sus recursos en carpetas, pero cuando se incluyen en su aplicación (archivo .cod), todos serán volcados a la misma carpeta.

Como puede ver, eso causa problemas si tiene múltiples recursos con el mismo nombre (pero en diferentes carpetas).

Solía ​​usar Netbeans IDE para crear aplicaciones de BlackBerry, y con el complemento Netbeans BlackBerry, parecía manejar esto. Pero con el RIM JDE o el complemento Eclipse, no es así. Tal vez es algo en el script de construcción de ant detrás del conjunto de herramientas?

De todos modos, sé que te gustaría hacer algo similar a Android, donde tendrías:

  • res / drawable-hdpi / icon.png
  • res / drawable-mdpi / icon.png
  • res / drawable-xhdpi / icon.png

y elija la versión correcta de icon.png según el tamaño / resolución de la pantalla. Es una buena idea.

Sin embargo, para simplificar, probablemente recomendaría cambiar su sistema para que solo use prefijos en sus nombres de recursos, en lugar de carpetas. Es un dolor, lo sé, pero BlackBerry parece manejarlo mejor.

Entonces, solo llame a sus imágenes:

  • res / img / 320_btn_download.png
  • res / img / 360_btn_download.png
  • res / img / 480_btn_download.png

y luego tu código puede ser:

 public static Bitmap Bitmap(String path) { return Bitmap.getBitmapResource(Display.getWidth() + "_" + path); } 

si desea obtener imágenes en función de sus resoluciones, entonces … dé nombres a las imágenes según su resolución, como 320x240_img1 , 360x480_img1 . no es necesario colocar estas imágenes en carpetas diferentes … descargue estas imágenes en la carpeta ur res y llame así

 int x = Display.getWidth(); int y = Display.getHeight(); String xx = Integer.toString(x); String yy =Integer.toString(y); _encImg = EncodedImage.getEncodedImageResource(xx+"x"+yy+".jpg");