Я создаю приложение для внутренней навигации (с тем, чтобы пользователь мог хранить карты для разных зданий в файловой системе телефона). Приложение запускается, предлагая пользователю выбрать карту для желаемого здания. Как только это будет выбрано, будет использоваться анализатор файла для анализа и преобразования данных карты из файла. Пока это происходит, я создал экран ожидания, на котором говорилось, что пожалуйста, подождите ... а также разместил изображение загрузки / обработки, которое является гифкой. Но когда я запускаю это в эмуляторе Sun WTK, гифка не меняется, она становится статичной картинкой. Кстати, я использую для этого Netbeans 6.1. Любые идеи? Большое спасибо.


Анимированные GIF-файлы не поддерживаются в MIDP по умолчанию, поэтому, если вы действительно хотите воспроизвести анимированный GIF-файл, вам необходимо использовать для этого MMAPI. Я предлагаю вам разделить анимацию на отдельные файлы и сделать анимацию вручную. Это самый простой способ.
Этот код позволяет воспроизводить анимированный gif в конце
InputStream is = getClass().getResourceAsStream("/OceanFish.gif");
DataInputStream di = new DataInputStream(is);
StaticAnimation simage = StaticAnimation.createAnimation(di);
но опять же, я бы не стал предлагать это, поскольку он не очень портативный.
Даже обработка изображений gif не поддерживается на старых телефонах, как указано в Форум Nokia.
Однако статья в журнале доктора Добба дает решение «Отображение изображений GIF на мобильных телефонах J2ME» с использованием свободно доступного класса GifEncoder.java. Его порт J2ME доступен на той же странице здесь.
Возможно, это не идеальное решение, но вы всегда можете извлечь кадры анимации gif на лист спрайтов в формате png, а затем использовать класс Sprite для обработки анимации. Это было бы гораздо более переносимым, поскольку класс Sprite является частью стандарта MIDP 2.
Я согласен, PNG в JavaME VM гораздо лучше поддерживаются, чем GIF. Например, Samsung E250 не выполняет рендеринг GIF в своем J2ME, но может выполнять PNG и JPEG (это из тестов, которые мы запускали в нашем приложении).