Сегодня, выдался свободный вечерок* и я решил набросать небольшое Андроид приложение. Забегая вперед скажу, что это оказалось совершенно несложно. Но, обо всем по порядку.
Недавно я стал обладателем замечательного устройства – Google Nexus 7. Хотя у меня уже имеется несколько устройств**, работающих под управлением Android, я приобрел этот аппарат специально для разработки приложений. В принципе, для того, что бы создавать приложения с помощью XE5, вам не обязательно покупать какой-то специальный планшет или смартфон. Скорее всего, приложение написанное на Delphi запустится и на том, что у вас есть в настоящий момент. Но сам факт того, что Nexus 7 выпускается под эгидой Google, практически гарантирует то, что его узнает любая среда разработки. К тому же качество исполнения и характеристики у планшета просто замечательные. По моему глубокому убеждению, лучшего планшета за $250 вы не купите.
Еще одним преимуществом явилось то, что сразу же после включения я, следуя настойчивой рекомендации производителя, обновил ОС до версии 4.3 (Jelly Bean) – последней из доступных на данный момент.
Действительно, процесс узнавания планшета прошел без малейших проблем. Очень порадовал в этом отношении Mobile Help Wizard (MHW), который буквально бросался мне на помощь на каждом шагу. Без его помощи я ни за что не догадался бы о том, что нужно семь раз нажать на серийном номере устройства, что бы стать Андроид разработчиком :). Я не стану здесь подробно описывать процесс создания и настройки Android приложения, а просто рекомендую воспользоваться советами MHW или прочесть статью Влада Баженова. Вместо этого просто приведу код простейшего таймера:
unit uMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Objects; type TForm1 = class(TForm) lblTime: TLabel; StyleBook1: TStyleBook; Panel1: TPanel; btnPlay: TCornerButton; btnPause: TCornerButton; btnStop: TCornerButton; Timer: TTimer; Image1: TImage; procedure btnPlayClick(Sender: TObject); procedure btnPauseClick(Sender: TObject); procedure btnStopClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TimerTimer(Sender: TObject); private { Private declarations } secCount: integer; function Sec2lblText(aSec: integer): string; public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.btnPauseClick(Sender: TObject); begin btnPlay.Enabled:= True; btnStop.Enabled:= True; btnPause.Enabled:= False; Timer.Enabled:= False; end; procedure TForm1.btnPlayClick(Sender: TObject); begin Timer.Enabled:= True; btnPlay.Enabled:= False; btnStop.Enabled:= True; btnPause.Enabled:= True; end; procedure TForm1.btnStopClick(Sender: TObject); begin Timer.Enabled:= False; btnPlay.Enabled:= True; btnStop.Enabled:= False; btnPause.Enabled:= False; secCount:= 0; end; procedure TForm1.FormCreate(Sender: TObject); begin secCount:= 0; end; function TForm1.Sec2lblText(aSec: integer): string; begin Result:= Format('%.2d', [aSec div 60])+':'+Format('%.2d', [aSec mod 60]); end; procedure TForm1.TimerTimer(Sender: TObject); begin Inc(secCount); lblTime.Text:= Sec2lblText(secCount); end; end.
Форма приложения приведена на скриншоте:
А что из этого получилось вы можете посмотреть в ролике. Обратите внимание на то, как органично смотрится FireMonkey стиль.
А вы уже написали свое первое приложение для Android.
* Спасибо Григорию Михайловичу Суркису, долгих лет ему жизни.
** На минуточку, он стал шестым в моей коллекции!
А какой размер приложения получился? Если собрать на eclipse то какая будет разница в размерах приложений?
Спасибо.
Об этом я смогу сказать только после выхода релиза.
Наберитесь терпения, уже не долго…
Eclipse штука мультиязычная. Какой язык имеется ввиду? Если Java, то конечно Delphi приложение будет значительно больше, т к содержит в себе свой собственный код отрисовки виджетов интерфейса (благодаря чему и является кросплатформенным). Если же имеется ввиду Qt + C++ то размер будет приблизительно тот же.
А что Суркис то?