Blackberry res文件夹命名约定

时间:2012-07-18 09:24:25

标签: blackberry naming-conventions

我创建了一个这样的静态函数。

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

然而,当我这样打电话时,

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

输出结果给了我FRIDG could not find 320/btn_download.png

在我的res文件夹中,我有一个img文件夹,img内有{6}个文件夹160240,{{ 1}},320360480文件夹。

如何根据640调用正确的文件夹图像?

3 个答案:

答案 0 :(得分:5)

可以在/res文件夹下设置文件夹层次结构,但您必须使用getClass().getResourceAsStream(path)而非Bitmap.getBitmapResource()才能创建资源。

此示例从路径/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);

这是一项更多的工作,但它确实意味着你可以拥有一个漂亮的文件夹结构,而不是将数百个图像集中在一个文件夹中。

答案 1 :(得分:2)

我之前遇到过这个问题。 BlackBerry apps don't seem to be well setup to handle resource files in subfolders.也就是说,您可以将资源存储在文件夹中,但是当捆绑到您的应用程序(.cod文件)中时,它们基本上都会被转储到同一个文件夹中。

正如您所看到的,如果您有多个具有相同名称的资源(但在不同的文件夹中),则会导致问题。

我曾经使用Netbeans IDE构建BlackBerry应用程序,而使用Netbeans BlackBerry插件,似乎可以解决这个问题。但是,使用RIM JDE或Eclipse插件,它没有。也许它是工具集背后的ant构建脚本中的东西?

无论如何,我知道你想做类似于Android的事情,你可以在那里:

  • RES /抽拉-HDPI /的icon.png
  • RES /抽拉-MDPI /的icon.png
  • RES /抽拉-xhdpi /的icon.png

并根据屏幕尺寸/分辨率选择正确版本的icon.png这是一个好主意。

但是,为简单起见,我可能会建议您将系统更改为仅在资源名称上使用前缀,而不是文件夹。我知道,这是一种痛苦,但黑莓似乎更好地处理它。

所以,只需打电话给你的图片:

  • RES / IMG / 320_btn_download.png
  • RES / IMG / 360_btn_download.png
  • RES / IMG / 480_btn_download.png

然后您的代码可以是:

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

答案 2 :(得分:1)

如果您想根据其分辨率获取图像,那么......根据像320x240_img1360x480_img1这样的分辨率为图像命名。无需将这些图像放在不同的文件夹中....将这些图像转储到ur res文件夹中并像这样调用

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");