Як зробити слайд-шоу на j2me

Як зробити слайд-шоу на J2Me?

Що таке MIDlet?
Оскільки Java 2 Micro Edition підтримує велику кількість пристроїв, то існують різні конфігурації цієї платформи. Не вдаючись в подробиці, ми будемо використовувати конфігурацію CDLC (Connected Limited Device Configuration), розширену профайлом MIDP (Mobile Information Device Profile), який забезпечує необхідну функціональність для програмування під мобільник.
MIDlet - це і є додаток Java, яке використовує профайл MIDP і конфігурацію CLDC.

Як зробити слайд-шоу на j2me

Після цього з'явиться вікно для введення інформації, яка буде використовуватися для створення файлу маніфесту і файлу .jad, тут можна нічого не виправляти і просто натиснути ОК.

Подивимося тепер в папку, де встановлений Wireless Toolkit, в каталозі apps з'явилася папка нашого проекту SlideShow. У ній автоматично склалося ще кілька папок, розглянемо призначення деяких з них:

bin - Файли програми: файл з розширенням .jar, файл .jad, MANIFEST.MF
res - Файли ресурсів програми, такі, як файли зображень .png
src - Вихідні файли програми


Як влаштований MIDlet?
Тепер перейдемо власне до коду програми. Все MIDlets повинні доповнювати клас javax.microedition.midlet.MIDlet, тобто мати його як базовий. (Ті, хто не знайомий з об'єктно-орієнтованими мовами, на цьому етапі можуть почитати додаткову літературу, тому що далі буде використовуватися відповідна термінологія). Робиться це в такий спосіб:
import javax.microedition.midlet.MIDlet;

public class SlideShow extends MIDlet
.
>;

Клас MIDlet є абстрактним, тому потрібно переписати кілька його методів: startApp (), pauseApp () і destroyApp (), які наказують дії в залежності від зміни поточного стану MIDlet'а (при його старті, призупинення або припинення відповідно).

Тут може виникнути аварійна ситуація, якщо, наприклад, невірно вказано ім'я файлу або вказаний файл це не картинка. Слід пам'ятати, що обробка аварійних ситуацій обов'язкове в Java з використанням try-catch блоків, інакше додаток просто не відкомпілюйте.

Наступний, необхідний нам об'єкт це форма. Форма - це екземпляр класу Form, який містить всі об'єкти, які відображаються на дисплеї. Додаються об'єкти в форму за допомогою методу append (...), а віддаляються методом delete (int itemNum). З огляду на все вищесказане, напишемо функцію створення картинки і додавання її в форму:

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Form;
import java.io.IOException;

public void setImage (String path)
try image = Image.createImage (path);
>
catch (IOException ioe) System.out.println (ioe.getMessage ());
>
form.append (image);
>


Останній і головний об'єкт в цій ієрархії - це екземпляр класу Display, який представляє фізичне відображення екрану мобільника. Отримати посилання на об'єкт Display можна за допомогою методу getDisplay, а зробити форму поточним відображуваним об'єктом - використовуючи метод setCurrent. Таким чином, наша функція startApp () буде виглядати наступним чином:

public void startApp () display = Display.getDisplay (this);
form = new Form ( "SlideShow");
setImage ( "/ SlideShow.png");
display.setCurrent (form);
>

Залишилося додати в клас SlideShow члени класу display, form, image і програма, яка показує картинку SlideShow.png на екрані, готова.

Як зробити слайд-шоу на j2me

import javax.microedition.lcdui.Command;
.
next = new Command ( "next", Command.SCREEN, 1);
back = new Command ( "back", Command.SCREEN, 1);
form.addCommand (next);
form.addCommand (back);

Тепер реалізуємо клас прослуховування і виконання команд:

import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;

private class MyCommandListener implements CommandListener public void commandAction (Command c, Displayable d) if (c == next).
>
if (c == back).
>
>

Об'єкт нового класу зв'язується з об'єктом форми за допомогою методу setCommandListener (...), додамо створення об'єкта обробки команд в функцію startApp ():

cl = new MyCommandListener ();
form.setCommandListener (cl);


Як показати багато картинок?
На цьому вся підготовча робота закінчена, тепер у нас є всі необхідні об'єкти, і ми з них, як з кубиків, складемо нашу програму. Назвемо картинки, які ми хочемо демонструвати так: 1.png, 2.png, ..., заодно додамо два члена класу SlideShow: int slideNum і int maxSlideNum, які будуть містити поточний номер картинки і загальна кількість картинок відповідно.
У метод обробки команд додамо логіку для зміни картинок на екрані при натисканні клавіш. В кінцевому підсумку наша програма цілком і повністю буде виглядати наступним чином:

public class SlideShow extends MIDlet private Display display;
private Form form;
private Command next;
private Command back;
private Image image;
private MyCommandListener cl;
private int slideNum = 1;
private int maxSlideNum = 6;

public void destroyApp (boolean destroy) form = null;
notifyDestroyed ();
>

public void pauseApp () <>

public void startApp () ...
>
public void setImage (String path).
>

private class MyCommandListener implements CommandListener <
public void commandAction (Command c, Displayable d) if (c == next slideNum if (c == back slideNum> 1) slideNum--;
form.delete (0);
setImage ( "/" + Integer.toString (slideNum) + ". png");
>
>
>;


Як запустити програму?
Ось власне і все, залишилося скомпілювати програму, використовуючи опцію Build в KToolbar. При повідомленні Build failed уважно подивіться, нічого Ви не упустили. Після того, як програма успішно скомпільована, можна запустити і подивитися її в дії в одному з емуляторів, що входять до складу Wireless Toolkit, використовуючи опцію Run.

Як зробити слайд-шоу на j2me

На цьому закінчимо наш урок. Підключіть вашу фантазію до технічних можливостей мобільника і буде Вам щастя!

Євген Буткевич (aka Voolkan)

Схожі статті