我正在使用NetBeans开发运行在许多不同设备上的J2ME应用程序。该应用程序使用了许多不同的图像资产。由于设备具有不同的屏幕大小,这意味着我需要编译多个二进制文件,每个二进制文件具有不同的资产大小。
到目前为止,我一直在使用手动流程来控制资产。我有一个由一堆子目录组成的目录,每个子目录对应于特定类设备所需的资产。例如,我有一个目录“320_240”,其资产大小为320x240屏幕,另一个“480_360”,资产大小为480x360屏幕。文件名与加载它们的代码完全相同。在编译之前,我只是将正确的文件复制到默认包中(在src下)。
这显然可以改善。我已经有不同的项目配置代表不同的屏幕尺寸,所以我也想让资产自动切换。作为NetBeans的相对新手,我不确定最好的方法是什么。
FWIW,这是我提出的最好的:
谢谢!
答案 0 :(得分:1)
如果您使用大量图像,那么jar文件的大小将会增加。您无法在某些低端设备中安装该jar。
只需使用一张图片,然后根据屏幕宽度和屏幕高度调整图像大小。
要调整图像大小,请使用以下方法。
public Image resizeImage(Image src, int screenHeight, int screenWidth) {
int srcWidth = src.getWidth();
int srcHeight = src.getHeight();
Image tmp = Image.createImage(screenWidth, srcHeight);
Graphics g = tmp.getGraphics();
int ratio = (srcWidth << 16) / screenWidth;
int pos = ratio / 2;
//Horizontal Resize
for (int index = 0; index < screenWidth; index++) {
g.setClip(index, 0, 1, srcHeight);
g.drawImage(src, index - (pos >> 16), 0);
pos += ratio;
}
Image resizedImage = Image.createImage(screenWidth, screenHeight);
g = resizedImage.getGraphics();
ratio = (srcHeight << 16) / screenHeight;
pos = ratio / 2;
//Vertical resize
for (int index = 0; index < screenHeight; index++) {
g.setClip(0, index, screenWidth, 1);
g.drawImage(tmp, 0, index - (pos >> 16));
pos += ratio;
}
return resizedImage;
}