Разработка андроид приложения на примере Калькулятора++. От идеи к реализации / Хабр
Идея
Я, как бывший студент, а ныне инженер, часто провожу какие-либо расчёты «на лету»: будь то расчёт стоимости товара за кг, значение эффективного годового процента за кредит или построение графика распределения голосов на выборах.
После нескольких минут поиска в андроид.маркете (который просто пухнет от представленных на нём программ) было установлено с десяток самых популярных калькуляторов. Но радость оказалась не полной… Всё мне не нравилось, всё было не удобно: где дизайн подкачал, где способ ввода, где постоянные падения. Тут и родилась идея: почему бы не написать свой калькулятор, — java я знаю хорошо. Пусть с андроид не работал — но зато опыта наберусь и скилы прокачаю, да и инструмент хороший получу.
Анализ
Более подробно остановлюсь на анализе нескольких приложений на андроид. маркете:
1. RealCalc Scientific Calculator (анроид.маркет)
Первым в списке идёт RealCalc — классический калькулятор с числом установок 5-10 млн. Средняя оценка: 4.7.
Плюсы:
- Сайт поддержки хорош — там и help и changes и FAQ
- Привычный дизайн (здесь всё сугубо субъективно — мне не нравится)
Очевидные* (* по моему мнению) недочёты:
- Невозможность ввода выражений
- Убогий дизайн (об этом ещё упомяну в конце главы)
- Скудный набор встроенных функций
- Невозможность построения графиков
- Обязательно использование знака умножения * (вместо 5sin(2PI) нужно писать 5*sin(2*PI))
2. Cube Calculator Free (андроид.маркет)
Число установок: 100-500 тыс. Средняя оценка: 4.8
Плюсы:
- Более продуманный дизайн (по сравнению с RealCalc)
- Расчёт выражений
- История вычислений
- Расчёт выражений «на лету» (не нужно нажимать кнопку ‘=’)
Минусы (часть из них один-в-один как и в RealCalc):
- Функционал разбит на два экрана и нужно постоянно переключаться между ними
- Скудный набор встроенных функций
- Невозможность построения графиков
- Обязательно использование знака умножения * (вместо 5sin(2PI) нужно писать 5*sin(2*PI))
3.
Число установок: 0.5 — 1 млн. Средняя оценка: 4.7
Плюсы:
- Мощный функционал (построение графиков, решение уравнений и т.д.)
- Работа с документами (сохранение, загрузка)
Минусы:
- Непонятный интерфейс — 2 экрана, на каждом своя кнопка = (выполняют разные функции)
- Для того чтобы попасть на экран дополнительных функций — нужно выполнить 3 действия (вызвать меню приложения, выбрать ‘Tools’, в появившемся меню выбрать ‘Functions’)
Общий итог:
Все рассмотренные выше приложения имеют один существенный недостаток — они имеют
Поняв эту простую истину, я решил, что основным отличием моего приложения будет именно продуманный интерфейс. В конце статьи я приведу примеры того, что мне удалось добиться.
Разработка
Разработку приложения я начал ещё в июне 2011 в свободное от работы время. В качестве движка вычислений был выбран JSCL; элементы GUI по большей части написаны мною, некоторые позаимствованы с просторов интернета; библиотека для построения графиков — AChartEngine (хотя не идеальна и имеет ряд довольно странных решений). Здесь стоит, наверное, добавить, что хотя я и выбрал стороннюю библиотеку для вычислений, в скором времени мне пришлось её форкать и исправлять баги/дописывать нужный функционал (она, кстати, сейчас доступна у меня на github’е).
В общем, было много фана, получено море опыта, выпита не одна чашка ароматного кофе и проведена не одна ночь перед компьютером.
Сейчас проект находится в активной фазе — продолжает дописываться функционал, почти каждую неделю выходят обновления с новыми фичами, фиксятся баги.
На момент написания статьи общее число собственных java классов в проекте равно 680 (включая внтренние классы), из которых 222 — в основном андроид-модуле (исходники), 276 — в модуле JSCL (исходники), 182 — в общем модуле (исходники).
Релиз
В какой-то момент времени я понял, что приложение уже готово для выпуска в массы. И после тестирования на устройствах коллег и знакомых Калькулятор++ появился в андроид.маркете.
Было это 16 октября.
Что получилось?
Как я писал выше — основной ставкой в Калькуляторе++ (далее К++) был продуманный интерфейс.
Распишу по пунктам какие особенности были добавлены в приложение для достижения данной цели:
- Каждая кнопка К++ помимо нажатия ещё умеет обрабатывать так называемый «свайп», т. е. Движение пальца в каком-нибудь направлении от её центра (на данный момент поддерживается свайп вверх и вниз, но уже в следующем релизе добавлю направление вправо). Какие выгоды от такого решения? В первую очередь, благодаря этому удалось на одном экране уместить очень большое число действий — от управления историей (см. клавишу «M») до простого ввода дополнительных функций и операторов (sin(), cos(), %, и т.
- Подсветка синтаксиса — ни в одном из рассмотренных выше калькуляторов не использовался простой способ выделения математических термов — форматирование текста: в К++ каждый уровень вложенности выделяется более тёмным цветом, функция выделяется курсивом, а переменная или константа — жирным.
- Автоматическое форматирование чисел: 1 000 000.00 или 1’000’000.00.
- Если результат не помещается в окно вывода, то его размер автоматически уменьшается до подходящего (fit screen, проще говоря).
- Для частых операций работы с буфером (копировать/вставить) выделены отдельные клавиши.
- Окно вывода результатов обладает дополнительным функционалом — если при вычислении произошла ошибка, то по нажатию на него, всплывёт окно с информацией об ошибке; если результат — функция одной переменной — то всплывёт меню с выбором дополнительных действий: построить график/скопировать; в других случаях результат будет просто скопирован в буфер.
- Простая и в то же время редко используемая вещь — произведение вычислений без нажатия кнопки =.
- При вводе функции — позиционирование курсора внутрь скобок.
- Поддержка ландшафтного и портретного режимов.
Как вы видите, в списке представлено довольно много простых вещей. Все вместе они сильно влияют на взаимодействие пользователя с приложением, доставляя первому удовольствие от работы, не мешая выполнять нужные операции быстро и эффективно.
В добавок к интерфейсу, Калькулятор++ имеет ряд функциональных преимуществ:
- Огромное число функций (тригонометрический, гиперболические, функции сравнения, и т. д.).
- Символьное интегрирование (∫), дифференцирование (∂), суммирование (Σ), произведение (∏).
- Построение графиков.
- Вычисления в пространстве комплексных чисел.
- Возможность сохранения собственных переменных (увы, до функций ещё не добрался).
- Возможность «опускания» знака умножить.
- Вычисления с процентами.
- Вычисления в различных системах счисления и различных угловых единицах (градусы, радианы).
Продвижение
Сегодня не достаточно просто иметь хорошее приложение. Поэтому я потратил некоторое время на его продвижение.
Далее представлены ключевые моменты в продвижении К++:
- Выкладка приложения на 4pda (помимо простого увеличения числа установок я получил бесценный фидбек от пользователей этого славного ресурса, за что им, кстати, спасибо).
- Обзор приложения в droider чарте. Опять же, спасибо создателям сего чудного обзора. За КОШ отдельный респект =) .
- Перевод на иностранные языки: изначально приложение поддерживало только английский и русский языки интерфейса, но благодаря добровольным стараниям Gabriele Ravanetti и Jordi Luna добавились, соответственно, итальянский и испанский. Большое спасибо им за это!
- Темы на других форумах, посвящённых андроид устройствам + reddit. com.
График установок приложения:
где
- Выкладка приложения на 4pda
- Droider обзор
- Перевод приложения на итальянский
Примечание: испанский язык появится только со следующей версии.
В этой главе также отмечу своё удивление тому, что для каждой страны продвигать приложение придётся отдельно (для меня было открытием то, что приехав в Европу и зайдя в андроид.маркет с местного компьютера, я не нашёл Калькулятор++ даже в первых 500 новых приложений). Конечно это хорошо для сильно локализованных приложений (расписания, переводчики и т. д.), но для приложений общего назначений — некий барьер.
Что дальше?
А дальше только одно — продолжение разработки; улучшение и допиливание приложения, вылизывание его кода для еще более удобной работы конечного пользователя.
Считаю, что Калькулятор++ — достойный конкурент на рынке калькуляторов в андроид.маркете, и нисколько не жалею о начале его разработки.
С вопросами, замечаниями, пожеланиями — связанными и не связанными с К++ — обращайтесь в личку или на почту, пишите комментарии. Обязательно отвечу =)
Спасибо за внимание!
Ссылки:
- Калькулятор++ на андроид.маркете
- Исходный код на github
UPD Спасибо всем за замечания, ошибки, пожелания и комментарии.
UPD 2 По просьбе читателей добавил QR-code
UPD 3 На github’е есть небольшой issue tracker. Если не сложно, вводите туда баги, желаемые фичи и т.д., там будет проще мне с вами связаться + ни один запрос не будет пропущен.
Простой калькулятор | F-Droid — Free and Open Source Android App Repository
Новое в версии 5.11.2
* Added some UI, translation and stability improvements
Этот стильный современный калькулятор предлагает великолепный пользовательский опыт, который вам понравится. Вы можете скопировать результат или формулу в буфер обмена путем длительного нажатия. Вы также можете использовать этот калькулятор как конвертер валют, чтобы рассчитать свой ежедневный доход и другие суммы в валюте разных стран. Благодаря приятной для глаз темной теме теперь вам будет легко видеть кнопки и цифры и использовать калькулятор для простых вычислений или как конвертер валют. Вы также можете использовать этот математический калькулятор в качестве ипотечного калькулятора.
Приложение является простым помощником для быстрых вычислений с множеством основных функций, включая умножение, деление, корень и силы. Приложение также поставляется с темной темой, так что вы можете использовать эту новую технологию, чтобы ваш калькулятор выглядел более гладким и простым в использовании, а не использовать резкие цвета, представленные в различных калькуляторах, которые не могут помочь вам сосредоточиться на сложных вычислениях в этом математическом калькуляторе.
Вы можете заставить его вибрировать при нажатии на кнопку, чтобы вы были уверены во время ввода значений. Изысканные цвета, используемые в этом приложении, имеют приятный глазу вид, поэтому вы сможете легко различать все кнопки и с легкостью производить вычисления. Калькулятор можно использовать для решения сложных корневых задач, а также в качестве конвертера валют или графического калькулятора.
В настройках есть возможность предотвратить засыпание телефона во время работы с приложением для комфортного использования.
Цвет текста изменяемого по размеру виджета можно настроить, также как и цвет и альфа-фактор фона. Нажмите на результат или формулу в виджете, чтобы открыть приложение.
Вы можете получить доступ к истории операций, чтобы быстро просмотреть недавние вычисления.
Приложение поставляется с материальным дизайном и темной темой по умолчанию, что обеспечивает отличный пользовательский опыт для удобного использования. Отсутствие доступа к интернету обеспечивает большую конфиденциальность, безопасность и стабильность по сравнению с другими приложениями.
Не содержит рекламы и ненужных разрешений. Является полностью открытым исходным кодом, обеспечивает настраиваемые цвета.
Особенности:
— Простой в использовании калькулятор.
— История операций.
— Поставляется с темной темой для плавного использования калькулятора.
— Работает как конвертер валют, чтобы помочь вам рассчитать ваши доходы и другие суммы.
— Настраиваемый цвет текста, чтобы он выглядел более круто и в соответствии с вашими потребностями.
— Размер кнопок соответствует размеру среднего пальца, касающегося экрана, что делает вычисления более удобными.
Ознакомьтесь с полным набором простых инструментов здесь:
https://www.simplemobiletools.com
Facebook:
https://www.facebook.com/simplemobiletools
Reddit:
https://www.reddit.com/r/SimpleMobileTools
Telegram:
https://t.me/SimpleMobileTools
Как создать простое приложение-калькулятор с помощью Android Studio?
Создание простого калькулятора в Kotlin с помощью Android Studio | Тану Н ПрабхуВ этом уроке мы научимся создавать простой калькулятор на Kotlin с помощью Android Studio. Кредиты: DigitstoryОписаниеВ этом уроке мы разработаем калькулятор « 10-key » на Android Studio с использованием Kotlin. Включенные кнопки должны быть:
Теперь мы знаем, как должен выглядеть и работать наш калькулятор, давайте приступим. Я постараюсь предоставить все основные шаги, чтобы вы поняли. Шаг 1. Создайте «пустое действие» в Android Studio.Давайте создадим новый проект. Поскольку наш калькулятор содержит только одно действие (нам нужен только один файл действия Kotlin и один файл макета XML), нам нужно выбрать « пустое действие ». Это можно сделать, как показано ниже: Новый → Новый проект → Пустая активность Создание пустой активности в студии AndroidПосле создания пустой активности настройте свои проекты, такие как имя, имя пакета, местоположение, язык и Уровень API. Следуйте приведенному ниже снимку экрана, чтобы настроить проект для согласованности. Убедитесь, что вы выбрали язык Kotlin (очевидно, я пишу код на Kotlin). Затем нажмите «Готово», после чего ваш проект будет загружен. Настройка вашего проектаЧтобы узнать больше об уровне API, вы можете обратиться к официальной документации Google, приведенной ниже. Не обязательно выбирать API 15, как показано на снимке экрана выше. Просто выберите его для согласованности ради учебника. Кодовые имена, теги и номера сборки | Android Open Source ProjectРазрабатываемые выпуски Android организованы в семейства с алфавитными кодовыми именами, вдохновленными вкусными угощениями…source. android.com Шаг 2: Добавление цветов в файл colors.xmlКак следует из названия файлов цветов, мы можем указать цвета для всех кнопок калькулятора. Файл colors.xml можно найти в: app →res →values →colors.xml xml version="1.0" encoding="utf-8" ?> Шаг 3: Изменение файла styles.xml Файл стиля используется для определения формат или внешний вид пользовательского интерфейса. Стиль можно применить к отдельному Файл styles.xml можно найти в app →res →values →styles.xml < ресурсы > |