我创建了一个这样的静态函数。
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}个文件夹160
,240
,{{ 1}},320
,360
和480
文件夹。
如何根据640
调用正确的文件夹图像?
答案 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的事情,你可以在那里:
并根据屏幕尺寸/分辨率选择正确版本的icon.png这是一个好主意。
但是,为简单起见,我可能会建议您将系统更改为仅在资源名称上使用前缀,而不是文件夹。我知道,这是一种痛苦,但黑莓似乎更好地处理它。
所以,只需打电话给你的图片:
然后您的代码可以是:
public static Bitmap Bitmap(String path) {
return Bitmap.getBitmapResource(Display.getWidth() + "_" + path);
}
答案 2 :(得分:1)
如果您想根据其分辨率获取图像,那么......根据像320x240_img1
,360x480_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");