Как правильно управлять активами изображений для J2ME в NetBeans? - PullRequest
1 голос
/ 25 октября 2011

Я использую NetBeans для разработки приложения J2ME, которое работает на разных устройствах. Приложение использует множество различных графических ресурсов. Поскольку устройства имеют разные размеры экрана, это означает, что мне нужно скомпилировать несколько двоичных файлов, каждый с разными размерами активов.

До сих пор я использовал ручной процесс для управления активами. У меня есть каталог, состоящий из нескольких подкаталогов, каждый из которых соответствует ресурсам, необходимым для определенного класса устройств. Например, у меня есть один каталог «320_240», в котором есть ресурсы, рассчитанные для экрана 320x240, и другой «480_360», который имеет активы, рассчитанные на экран 480x360. Имена файлов точно такие же, как и код, который их загружает. Перед компиляцией я просто копирую нужные файлы в пакет по умолчанию (под src).

Это, очевидно, можно улучшить. У меня уже есть разные конфигурации проекта, представляющие разные размеры экрана, поэтому я бы тоже хотел, чтобы активы автоматически переключались. Как относительный новичок в NetBeans, я не уверен, что лучший способ сделать это.

FWIW, вот лучшее из того, что я придумал:

  1. Создать актив. пакеты в src, где LABEL соответствует классу устройства (например, «320_240», «480_360»)
  2. Поместите изображения для каждого класса в соответствующий каталог src / asset /
  3. Создайте статический окончательный String assetDir, для которого задано значение "/ asset //" в соответствии с выбранной конфигурацией проекта
  4. Загрузка изображений с помощью Image.creatImage (assetDir + "image.png")
  5. Для каждой конфигурации включайте только необходимый каталог ресурсов в Project-> Build-> Sources Filtering (я думаю, что это необходимо, чтобы избежать хранения неиспользуемых изображений в скомпилированном приложении, верно?)

Впрочем, это все еще немного странно. Это должно быть общей проблемой. У кого-нибудь есть лучшее решение?

Спасибо!

1 Ответ

1 голос
/ 16 августа 2012

Если вы используете много изображений, то размер файла 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;

    }
...