Меню сайта

Разработка андроид приложения на примере Калькулятора++. От идеи к реализации

Разработка андроид приложения на примере Калькулятора++. От идеи к реализации

Разработка андроид приложения на примере Калькулятора++. От идеи к реализации

Идея

Я, как бывший студент, а ныне инженер, часто провожу какие-либо расчёты«на лету»: будь то расчёт стоимости товара за кг, значение эффективногогодового процента за кредит или построение графика распределения голосовна выборах.

После нескольких минут поиска в андроид.маркете (который просто пухнетот представленных на нём программ) было установлено с десяток самыхпопулярных калькуляторов. Но радость оказалась не полной… Всё мне ненравилось, всё было не удобно: где дизайн подкачал, где способ ввода,где постоянные падения. Тут и родилась идея: почему бы не написать свойкалькулятор, — java я знаю хорошо. Пусть с андроид не работал — но затоопыта наберусь и скилы прокачаю, да и инструмент хороший получу.

Анализ

Более подробно остановлюсь на анализе нескольких приложений на андроид.маркете:

1. RealCalc Scientific Calculator (анроид.маркет)
Разработка андроид приложения на примере Калькулятора++. От идеи к реализации
Первым в списке идёт RealCalc — классический калькулятор с числом установок 5-10 млн. Средняя оценка: 4.7.

Плюсы:

  1. Сайт поддержки хорош — там и help и changes и FAQ
  2. Привычный дизайн (здесь всё сугубо субъективно — мне не нравится)

Очевидные* (* по моему мнению) недочёты:

  1. Невозможность ввода выражений
  2. Убогий дизайн (об этом ещё упомяну в конце главы)
  3. Скудный набор встроенных функций
  4. Невозможность построения графиков
  5. Обязательно использование знака умножения * (вместо 5sin(2PI) нужно писать 5*sin(2*PI))

2. Cube Calculator Free (андроид.маркет)
Разработка андроид приложения на примере Калькулятора++. От идеи к реализации
Число установок: 100-500 тыс. Средняя оценка: 4.8

Плюсы:

  1. Более продуманный дизайн (по сравнению с RealCalc)
  2. Расчёт выражений
  3. История вычислений
  4. Расчёт выражений «на лету» (не нужно нажимать кнопку ‘=’)

Минусы (часть из них один-в-один как и в RealCalc):

  1. Функционал разбит на два экрана и нужно постоянно переключаться между ними
  2. Скудный набор встроенных функций
  3. Невозможность построения графиков
  4. Обязательно использование знака умножения * (вместо 5sin(2PI) нужно писать 5*sin(2*PI))

3. Handy Calc (андроид.маркет)
Разработка андроид приложения на примере Калькулятора++. От идеи к реализации
Число установок: 0.5 — 1 млн. Средняя оценка: 4.7

Плюсы:

  1. Мощный функционал (построение графиков, решение уравнений и т.д.)
  2. Работа с документами (сохранение, загрузка)

Минусы:

  1. Непонятный интерфейс — 2 экрана, на каждом своя кнопка = (выполняют разные функции)
  2. Для того чтобы попасть на экран дополнительных функций — нужновыполнить 3 действия (вызвать меню приложения, выбрать ‘Tools’, впоявившемся меню выбрать ‘Functions’)

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

Поняв эту простую истину, я решил, что основным отличием моегоприложения будет именно продуманный интерфейс. В конце статьи я приведупримеры того, что мне удалось добиться.

Разработка

Разработку приложения я начал ещё в июне 2011 в свободное от работывремя. В качестве движка вычислений был выбран JSCL- элементы GUI побольшей части написаны мною, некоторые позаимствованы с просторовинтернета- библиотека для построения графиков — AChartEngine (хотя неидеальна и имеет ряд довольно странных решений). Здесь стоит, наверное,добавить, что хотя я и выбрал стороннюю библиотеку для вычислений, вскором времени мне пришлось её форкать и исправлять баги/дописыватьнужный функционал (она, к
стати, сейчас доступна у меня на github’е).

В общем, было много фана, получено море опыта, выпита не одна чашка ароматного кофе и проведена не одна ночь перед компьютером.

Сейчас проект находится в активной фазе — продолжает дописыватьсяфункционал, почти каждую неделю выходят обновления с новыми фичами,фиксятся баги.

На момент написания статьи общее число собственных java классов впроекте равно 680 (включая внтренние классы), из которых 222 — восновном андроид-модуле (исходники), 276 — в модуле JSCL (исходники), 182 — в общем модуле (исходники).

Релиз

В какой-то момент времени я понял, что приложение уже готово для выпускав массы. И после тестирования на устройствах коллег и знакомыхКалькулятор++ появился в андроид.маркете.
Было это 16 октября.

Что получилось?

Разработка андроид приложения на примере Калькулятора++. От идеи к реализации

Как я писал выше — основной ставкой в Калькуляторе++ (далее К++) был продуманный интерфейс.

Распишу по пунктам какие особенности были добавлены в приложение для достижения данной цели:

  1. Каждая кнопка К++ помимо нажатия ещё умеет обрабатывать такназываемый «свайп», т. е. Движение пальца в каком-нибудь направлении отеё центра (на данный момент поддерживается свайп вверх и вниз, но уже вследующем релизе добавлю направление вправо). Какие выгоды от такогорешения? В первую очередь, благодаря этому удалось на одном экранеуместить очень большое число действий — от управления историей (см.клавишу «M») до простого ввода дополнительных функций и операторов(sin(), cos(), %, и т. д.). Это сразу же решило проблему несколькихэкранов и переключения между ними.
  2. Подсветка синтаксиса — ни в одном из рассмотренных вышекалькуляторов не использовался простой способ выделения математическихтермов — форматирование текста: в К++ каждый уровень вложенностивыделяется более тёмным цветом, функция выделяется курсивом, апеременная или константа — жирным.Разработка андроид приложения на примере Калькулятора++. От идеи к реализации
  3. Автоматическое форматирование чисел: 1 000 000.00 или 1’000’000.00.
  4. Если результат не помещается в окно вывода, то его размер автоматически уменьшается до подходящего (fit screen, проще говоря).
  5. Для частых операций работы с буфером (копировать/вставить) выделены отдельные клавиши.
  6. Окно вывода результатов обладает дополнительным функционалом — еслипри вычислении произошла ошибка, то по нажатию на него, всплывёт окно синформацией об ошибке- если результат — функция одной переменной — товсплывёт меню с выбором дополнительных действий: построитьграфик/скопировать- в других случаях результат будет просто скопирован вбуфер.
  7. Простая и в то же время редко используемая вещь — произведение вычислений без нажатия кнопки =.
  8. При вводе функции — позиционирование курсора внутрь скобок.
  9. Поддержка ландшафтного и портретного режимов.

Разработка андроид приложения на примере Калькулятора++. От идеи к реализации

Как вы видите, в списке представлено довольно много простых вещей. Всевместе они сильно влияют на взаимодействие пользователя с приложением,доставляя первому удовольствие от работы, не мешая выполнять нужныеоперации быстро и эффективно.

В добавок к интерфейсу, Калькулятор++ имеет ряд функциональных преимуществ:

  1. Огромное число функций (тригонометрический, гиперболические, функции сравнения, и т. д.).
  2. Символьное интегрирование (∫), дифференцирование (∂), суммирование (Σ), произведение (∏).
  3. Построение графиков.
  4. Вычисления в пространстве комплексных чисел.
  5. Возможность сохранения собственных переменных (увы, до функций ещё не добрался).
  6. Возможность «опускания» знака умножить.
  7. Вычисления с процентами.
  8. Вычисления в различных системах счисления и различных угловых единицах (градусы, радианы).

Продвижение

Сегодня не достаточно просто иметь хорошее приложение. Поэтому я потратил некоторое время на его продвижение.
Далее представлены ключевые моменты в продвижении К++:

  1. Выкладка приложения на 4pda (помимо простого увеличения числаустан
    овок я получил бесценный фидбек от пользователей этого славногоресурса, за что им, кстати, спасибо).
  2. Обзор приложения в droider чарте. Опять же, спасибо создателям сего чудного обзора. За КОШ отдельный респект =) .
  3. Перевод на иностранные языки: изначально приложение поддерживалотолько английский и русский языки интерфейса, но благодаря добровольнымстараниям Gabriele Ravanetti и Jordi Luna добавились, соответственно,итальянский и испанский. Большое спасибо им за это!
  4. Темы на других форумах, посвящённых андроид устройствам + reddit.com.

График установок приложения:
Разработка андроид приложения на примере Калькулятора++. От идеи к реализации

где

  1. Выкладка приложения на 4pda
  2. Droider обзор
  3. Перевод приложения на итальянский

Примечание: испанский язык появится только со следующей версии.

В этой главе также отмечу своё удивление тому, что для каждой страныпродвигать приложение придётся отдельно (для меня было открытием то, чтоприехав в Европу и зайдя в андроид.маркет с местного компьютера, я ненашёл Калькулятор++ даже в первых 500 новых приложений). Конечно этохорошо для сильно локализованных приложений (расписания, переводчики ит. -д.), но для приложений общего назначений — некий барьер.

Что дальше?

А дальше только одно — продолжение разработки- улучшение и допиливаниеприложения, вылизывание его кода для еще более удобной работы конечногопользователя.
Считаю, что Калькулятор++ — достойный конкурент на рынке калькуляторов вандроид.маркете, и нисколько не жалею о начале его разработки.

С вопросами, замечаниями, пожеланиями — связанными и не связанными с К++— обращайтесь в личку или на почту, пишите комментарии. Обязательноотвечу =)

Спасибо за внимание!
Разработка андроид приложения на примере Калькулятора++. От идеи к реализации
Ссылки:

  1. Калькулятор++ на андроид.маркете
  2. Исходный код на github

UPD Спасибо всем за замечания, ошибки, пожелания и комментарии.
UPD 2 По просьбе читателей добавил QR-code

Категория: Программирование | Дата: 11.05.13

Меню раздела
Блок