在NetBeans中管理J2ME映像资产的正确方法是什么?



我正在使用NetBeans开发一个可以在许多不同设备上运行的J2ME应用程序。该应用程序使用了许多不同的图像资源。由于设备具有不同的屏幕尺寸,这意味着我需要编译多个二进制文件,每个文件具有不同的资产大小。

到目前为止,我一直在使用手动过程来控制资产。我有一个由一堆子目录组成的目录,每个子目录对应于特定类型的设备所需的资产。例如,我有一个目录"320_240",它的资产大小适用于320x240屏幕,另一个目录"480_360",它的资产大小适用于480x360屏幕。文件名与加载它们的代码完全相同。在编译之前,我只是将适当的文件复制到默认包中(在src下)。

这显然可以得到改善。我已经有了代表不同屏幕尺寸的不同项目配置,所以我也想让资产自动切换。作为NetBeans的新手,我不确定最好的方法是什么。

哎呀,这是我想到的最好的:

  1. 创建资产。src下的包,其中LABEL对应于设备类(例如。"320 _240"、"480"_360)
  2. 将每个类的图像放入相应的src/asset/目录
  3. 创建一个静态的最终字符串assetDir,根据当前选择的项目配置设置为"/asset//"
  4. 使用Image加载图像。creatImage(assetDir + "image.png")
  5. 对于每个配置,在Project->Build->Sources Filtering中只包含必要的资产目录(我认为这是必要的,以避免在编译的应用程序中存储未使用的图像,对吗?)

这仍然感觉有点做作。这是一个普遍的问题。有人有更好的解决方案吗?

谢谢!

如果使用大量图像,则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;
    }

相关内容

  • 没有找到相关文章

最新更新