MIDletPascal: собираем Java-слайдшоу для любого мобильного +пример

Среда разработки Java-приложений для мобильных устройств MIDLet Pascal позволяет работать с ресурсными файлами различных типов. Так, если мы хотим листать страницы электронной книги, надо использовать текстовые файлы ресурсов (читать о создании Java-книги). Любители слайд-шоу должны работать, соответственно, с графическими ресурсами.

В некоторые телефоны опция просмотра картинок в режиме слайдов прошивается изначально. В некоторые. Но не во все. В то же время чуть ли не все мобильные поддерживают технологию Java и оснащены встроенными WAP-браузерами.

Мы расскажем, как создать Java-фотоальбом с уже включенными фотографиями. Использовать программку можно разнообразно – для хранения шпаргалок и заметок, для передачи своих фотографий на телефоны друзей и даже для создания собственных клипов. В одном файле будут находиться фотографии и программный код. Такое приложение заработает на любом телефоне – будь то наисовременнейший коммуникатор или же обычный аппарат без сложной ОС. Это значит, что поделиться своим Java-альбомом получится практически с каждым.

Скачать пример Java-слайдшоу к этой статье

  • Узнать о способе доставки приложений через собственноручно созданный WAP-сайт
  • Узнать, что такое Java
  • Секреты установки Java-программ (JAD/JAR)
  • Общие рекомендации по установке Java
Режимы работы слайд-шоу

Смена слайдов может происходить по-разному:

  • автоматический показ слайдов, когда картинки следуют одна за другой через определенный промежуток времени;
  • случайный показ слайдов;
  • режим просмотра вручную, когда пользователь сам листает картинки.

Для экономии памяти важно оптимизировать разрешение картинок для экрана вашего телефона.

Жизненный цикл будущей программы

Когда изображения подготовлены для участия в действе, можно подумать и о будущей программе. Она должна обеспечить:

  • возможность выбора одного из трех режимов смены слайдов;
  • ввод пользователем времени смены слайдов (для автоматического и случайного режимов);
  • досрочное завершение показа слайдов;
  • предложение просмотреть картинки еще раз либо закрыть приложение.

Основываясь на вышеизложенном, можно предложить упрощенный алгоритм работы приложения:

В свою очередь, шаг «слайд-шоу» означает просмотр слайдов в одном из выбранных режимов:

 

Реализация задуманного в MIDLet Pascal

Теперь, имея представление о работе слайд-шоу, мы можем приступить к созданию нового проекта в MIDLet Pascal (этот процесс детально описан в статье о создании Java-книги). Подготовленные картинки добавляем в проект как ресурсные файлы. Это картинка-приглашение welcome.png и файлы слайдов s1.png, s2.png, …, s5.png. Если число слайдов другое, например 20, то необходимо изменить третью строку прилагаемого кода «counter=20; //число слайдов». За формат слайдов (у нас это png-картинки) отвечает четвертая строка кода.

В приведенном коде знак «//» означает комментарии. Все, что стоит на строке после этого знака, игнорируется компилятором. Комментарии делаются исключительно для понимания программного кода.

program SlideShow;

Const

                counter=5; //число слайдов

                format='.png'; //формат файлов слайдов

Var

                img: Array[0..counter] Of Image;

                s: Array[1..3] Of String;

                r: Array[1..3] Of Integer;

                i, j, k, m, index, nameField, time: Integer;

                next, prev, clicked, exit,yes: Command;

Procedure Menu; //процедура вывода меню выбора режима показа слайдов

Var

                OK: Command;

Begin

                ShowMenu('Режим управления', CH_EXCLUSIVE);

                For j:=1 To 3 Do r[j]:=MenuAppendString(s[j]);

                OK := CreateCommand('OK', CM_OK, 2); 

AddCommand(OK);

                repeat

                               clicked := GetClickedCommand;

until clicked = OK;

RemoveCommand(OK);

end;

Procedure HandSetMode; // процедура ручного режима показа слайдов

Var

OK: Command;

Begin

                ShowCanvas;

                Repaint;

                next := CreateCommand('вперед', CM_SCREEN, 1); 

                prev := CreateCommand('назад', CM_BACK, 1);

                AddCommand(next);

                AddCommand(prev);

                i:=1;

                Repeat

                               DrawImage(img[i], 0, 0);

                               Repaint;

                               Repeat

                                               clicked := GetClickedCommand;

                               Until clicked<> EmptyCommand;

                               If clicked=prev Then

                               Begin

                                               If i>1 Then i:=i-1;

                               End;

                               If clicked=next Then

                               Begin

                                               If i<=counter Then i:=i+1;  

                               End;

                Until i>counter;

                RemoveCommand(next);RemoveCommand(prev);

                OK := CreateCommand('Конец', CM_OK, 2); 

AddCommand(OK);

                repeat

                               clicked := GetClickedCommand;

until clicked = OK;

RemoveCommand(OK);

end;

Procedure ChoiseTime; // процедура ввода временного интервала

Var

OK: Command;

                str:string;

Begin

                ShowForm;

                nameField := FormAddTextField('Время смены слайдов в секундах', '2', 2, TF_NUMERIC);

                OK := CreateCommand('OK', CM_OK, 2); 

AddCommand(OK);

                Repeat

                               clicked := GetClickedCommand;

Until clicked = OK;

str:=FormGetText(nameField);

                time:=StringToInteger(str);

                time:=time*1000;

RemoveCommand(OK);

FormRemove(nameField);

End;

Procedure Show; // процедура автоматического показа слайдов

Var

                OK: Command;

Begin

                ShowCanvas;

                OK := CreateCommand('Стоп', CM_OK, 2); 

                AddCommand(OK);

                Repeat

                For j:=1 To counter Do

                Begin

                               DrawImage(img[j], 0, 0);

                               Repaint;

                               Delay(time);

                               clicked := GetClickedCommand;

                               If clicked=OK Then Break;

                End;

                Until clicked=OK;

                RemoveCommand(OK);

End;

Procedure RandomShow; // процедура перетасованного показа слайдов

Var

                OK: Command;

Begin

                Randomize;

                ShowCanvas;

                OK := CreateCommand('Стоп', CM_OK, 2); 

                AddCommand(OK);

                Repeat

                               j:=Random(counter)+1;

                               DrawImage(img[j], 0, 0);

                               Repaint;

                               Delay(time);

                               clicked := GetClickedCommand;

                               If clicked=OK Then Break;

                Until clicked=OK;

                RemoveCommand(OK);

End;

Procedure Choise; //процедура выбора режима показа слайдов

Begin

                If MenuGetSelectedIndex = r[1] Then

                               Begin

                                               ChoiseTime;

                                               Show;

                               End;

                If MenuGetSelectedIndex = r[2] Then

                               Begin

                                               ChoiseTime;

                                               RandomShow;

                               End;

                If MenuGetSelectedIndex = r[3] Then HandSetMode;

End;

BEGIN

                ShowCanvas;

                Repaint;

                img[0]:=LoadImage('/welcome.png');

                For m:=1 To counter Do

                Begin

                img[m]:=LoadImage('/s'+IntegerToString(m)+'.png');

                End;

                s[1]:='Автоматический';

                s[2]:='Случайный';

                s[3]:='Ручной';

                DrawImage(img[0], 0, 0);

                Repaint;

                Delay(2000);

                index:=0;

                Repeat

                               Menu;

                               Choise;

                               ShowForm;

                               k := FormAddString('Просмотреть еще раз?');

                               yes := CreateCommand('Да', CM_OK, 1); 

                               exit := CreateCommand('Выйти', CM_EXIT, 1);

                               AddCommand(yes);

                               AddCommand(exit);

                               Repeat

                                               clicked := GetClickedCommand;

                               Until clicked <> EmptyCommand;

                               If clicked = exit Then index:=1;

                               ClearForm;

                Until index=1;      

                k := FormAddString('На выход...');

                Delay(2000);

END.

После добавления ресурсных файлов и вставки кода программы в соответствующее окно ввода текста компилируем проект (жмем F7).






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.