Цели и задачи
В Delphi, начиная с версии XE5, библиотека Firemonkey (FMX) и ее компоненты дают разработчикам настольных и мобильных приложений большое количество возможностей, реализация которых выполняется все чаще без кода и углубления в специализированные языки программирования для мобильных устройств или библиотеку OpenGL для разработки трехмерных игр и приложений. Несомненно, это ускоряет процесс разработки, дает возможность компилировать проект для мобильных операционных систем, но при этом получая более весомые проекты с точки зрения занимаемого пространства в файловой системе. Сегодня мы вместе разработаем наше мобильное приложение на языке Delphi, установим его на устройство и будем его тестировать. Так как мы будем разрабатывать мобильное приложение, исполняемое в виртуальной машине DalvikVM на стороне операционной системы Android, интерпретирующей байт-код, предварительно созданный и скомпилированный из исходного текста Java-программы (jar) утилитой Android SDK после написания кода в Eclipse, то процесс разработки apk в Delphi будет достаточно простым. Что для этого понадобится? Среда разработки, знания, умения, применение изученного ранее материала по программированию. Так почему же apk файл, собранный в Delphi, занимает так много места в файловой системе после разархивирования или установки? Дело в том, что FMX-библиотеки для работы мобильного приложения скомпилированного в Delphi (файл с расширением so) находятся внутри установочного файла-архива apk, в отличие от apk от Eclipse, где все библиотеки предоставляются операционной системой Android. Правда использование системных ресурсов файлом, скомпилированным в Delphi, с появлением все более мощных устройств можно не учитывать, при этом, не забывая о том, что абсолютно все возможности могут быть реализованы только на основе таких языков, как Java, Python, C и другие.
Пример 1. Разработка мобильного приложения «Калькулятор» - 10 мин
1. Создайте новый проект «File»-«New»-«Firemonkey Mobile Application»
2. Выберите пункт «Blank Application», т.е. новую пустую форму, и нажмите «ОК»
3. Будет создана форма мобильного устройства, форму и размер которой вы можете выбрать из списка в верхнем правом углу окна Design Time. В этом же части окна вы можете выбрать ориентацию экрана «Portrait» или «Landscape»
4. Форма готова и на ней можно размещать компоненты. Палитра компонентов размещена в правой нижней части окна среды программирования. Вспомните, какие компоненты нужны для разработки программы «Калькулятор»?
5. Аналогично разработке подобной программы перейдем к событию OnClick. Вспомните и расскажите алгоритм работы программы? Добавим переменные и напишем программу.
uses FMX.Platform.Android;
var
Form1: TForm1;
a,b,c:real;
x,y,z,i:integer;
d:char;
StatusKeyboard: boolean = false;
implementation
{$R *.fmx}
procedure TForm1.Button11Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:=floattostr(sin(a)*(pi/180));
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:=floattostr(cos(a)*(pi/180));
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:=floattostr(sin(a)*(pi/180)/cos(a)*(pi/180));
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
d:='e';
edit1.Text:='';
end;
procedure TForm1.Button19Click(Sender: TObject);
begin
x:=strtoint(edit2.Text);
d:='d';
edit2.Text:='';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
d:='+';
edit1.Text:='';
end;
procedure TForm1.Button20Click(Sender: TObject);
begin
x:=strtoint(edit2.Text);
d:='f';
edit2.Text:='';
end;
procedure TForm1.Button21Click(Sender: TObject);
begin
x:=strtoint(edit2.Text);
for i:= 1 to x do z:=x*i;
edit2.Text:=inttostr (z);
end;
procedure TForm1.Button25Click(Sender: TObject);
begin
b:=strtofloat(edit1.Text);
case d of
'+':c:=a+b;
'-':c:=a-b;
'/':c:=a/b;
'*':c:=a*b;
'%':c:=(a*b)/100;
'e':c:=exp(ln(a)*b);
end;
edit1.Text:=floattostr (c);
end;
procedure TForm1.Button26Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:=floattostr(cos(a)*(pi/180)/sin(a)*(pi/180));
end;
procedure TForm1.Button27Click(Sender: TObject);
begin
EDIT1.Text:='';
EDIT2.Text:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
d:='-';
edit1.Text:='';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
d:='/';
edit1.Text:='';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
d:='*';
edit1.Text:='';
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:=floattostr(sqr(a));
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:=floattostr(sqrt(a));
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
a:=strtofloat (edit1.Text);
d:='%';
edit1.Text:='';
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
y:=strtoint(edit2.Text);
case d of
'd':z:=x div y;
'f':z:=x mod y;
end;
edit2.Text:=inttostr(z);
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then
begin
if not StatusKeyboard then begin
MainActivity.finish;
end;
end;
end;
6. Скомпилируем и запустим проект. По адресу «…\Android\Debug\Project1\bin» внутри вашей папки с проектом вы найдете apk файл готовый к установке в операционной системе Android.
Вопросы для закрепления
- Что такое и для чего предназначена виртуальная машина?
- Объясните (проиллюстрируйте, расскажите) процесс разработки установочного файла apk?
- Какие возможности работы с ОС Android предоставляет FMX-библиотека?
- Вопросы по работе приложения