четверг, 17 октября 2013 г.

Первое приложение под Android, некоторые мысли вслух

Свершилось. Наконец-то  я стал владельцем Android устройства в виде телефона Lenovo S750. И конечно же став им, решил попробовать написать свое первое приложение под новую платформу.
Итак прежде чем начать писать я столкнулся с тем, что мое устройство с 4'5 дюймовым экраном отсутствует в формах доступных устройств, я имею ввиду в выпадающем списке где выбираются для формы разрешение и внешний вид Android устройства. Ничего страшного - решил я, нарисую форму своего телефона в дизайнере мобильных устройств, заодно проставлю размеры разрешения экрана- так думал я входя в Tools - Options - Form Designer - Device Manager.
Первый блин вышел комом, несмотря на то, что Lenovo S750 имеет разрешение экрана 450*960 пикселей, форма выставленная с такими размерами в дизайнере почему то не помещалась в экран. То есть ставя кнопку например длиной 400 пикселей, часть кнопки осталась за пределами экрана. Странно, подумал я, какое же разрешение у Screen в Firemonkey на этом устройстве. И набросав простейший код, выводящий свойства Height и Width я узнал что почему то FM определяет область экрана как 360*640 пикселей. Интересная особенность FM, но делать нечего подправил в дизайнере проект под выданные FM цифры, загрузил шаблон телефона и получил вот такой вид:

Далее, попробовал сделать простейший проект по расчету кубатур досок (отголоски дачной жизни, часто ездя на базы пиломатериалов считал вручную, что не всегда было удобно)
создал такой мобильный проект, выбрав в списке устройств  свою новую созданную модель.
Код, приводить не буду, он простейший, единственная небольшая хитрость заключалась в том, что при открытии числовой клавиатуры приложение не реагировало на клавишу Enter. Для удобства в форму я добавил  обработчик который по Enter переходил на следующий контрол.
Код его простейший, может кому и прогодится:

procedure TfrmMail.FormKeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
 if Key = vkReturn then
 begin
    Key := vkTab;
    KeyDown(Key, KeyChar, Shift);
 end;
end;


Вообщем, запуск на живом устройстве прошел на ура.
В принципе я доволен, хотя так и не понял почему Screen выдает разрешение в 360*640 пикселей. И можно ли это поправить. Потому как реально места на экране маловато.

4 комментария:

  1. Не пишите десктопных приложений для смартфонов!
    Для мобильных приложений нужен совсем другой подход к интерфейсу со значительно меньшей плотностью контролов. То, что у вас на скриншоте, нужно было разбить на несколько закладок.

    ОтветитьУдалить
  2. >> Torbins
    Почему, мне так удобнее, все в одном месте. Тем более приложение простейшее и смысл городить несколько форм, для разбивки контролов. Тут ввел данные и посчитал. Единственное что можно сделать прокрутку и увеличить контролы. Но честно - пока без надобности.

    ОтветитьУдалить
  3. Та же фигня с разрешением :(
    У мня китаец, 540х960, навскидку в инетах решения не нашёл

    ОтветитьУдалить
  4. >>Не пишите десктопных приложений для смартфонов!

    Именно. LitsBox/ListView.

    + кнопка "Рассчитать" лишняя :)
    как только полнота введённых данных достигнута - автоматический расчет.
    Собственно, и для десктопа кнопка "рассчитать" тоже лишняя. Если интерфейс "умный".

    Но автору поста - респект! А "советы" - из желания улучшить. Хочется увидеть "расчет кубатуры" второй версии с чисто-мобильным интерфейсом.

    Ну и отдельный респект автору за смелость. Как-то все втихую пробуют, а показать боятся.
    Готов посодействовать 3D-визуалиации досково-закрываемой поверхности.

    ОтветитьУдалить