как сделать приложение калькулятор для андроид
В этом руководстве мы расскажем, как создать калькулятор на Java для Android. Если вы новичок в программировании и никогда раньше не создавали приложения, ознакомьтесь с нашим предыдущим руководством по написанию первого приложения для Android:
Создание проекта
Первое, что нужно сделать — это создать в Android Studio новый проект: Start a new Android Studio project или File — New — New Project :
Для этого руководства мы выбрали в панели « Add an Activity to Mobile » опцию « EmptyActivity », для « MainActivity » мы оставили имя по умолчанию – « Activity ». На этом этапе структура должна выглядеть, как показано на рисунке ниже. У вас есть MainActivity внутри пакета проекта и файл activity_main.xml в папке layout :
Включение привязки данных в проекте
Разработка макета калькулятора
Как научиться создавать приложения для Андроид? Читайте наше руководство дальше.
Общие принципы создания виджетов макета
В приложении калькулятора есть четыре основных элемента:
RelativeLayout — определяет, как другие элементы будут укладываться или отображаться на экране. RelativeLayout используется для позиционирования дочерних элементов по отношению друг к другу или к самим себе.
TextView — элемент используется для отображения текста. Пользователи не должны взаимодействовать с этим элементом. С помощью TextView отображается результат вычислений.
Button — реагирует на клики пользователя. При создании простого приложения для Андроид мы используем кнопки для цифр и операторов действий в калькуляторе.
Создание макета калькулятора
Код макета калькулятора объемный. Это связано с тем, что мы должны явно определять и тщательно позиционировать каждую из кнопок интерфейса. Ниже представлен фрагмент сокращенной версии файла макета activity_main :
Внутренние компоненты калькулятора
Затем мы используем класс DecimalFormat для форматирования результата. Конструктор десятичного формата позволяет отображать до десяти знаков после запятой.
Обработка нажатий на цифры
Обработка кликов по кнопкам операторов
Поздравляю! Мы завершили создание простого калькулятора. Теперь вы сможете создать приложение для Андроид сами.
Заключение
Если вы запустите и протестируете данное приложение, то увидите некоторые моменты, которые можно улучшить: 1) возможность нажимать на кнопку оператора, когда editText очищен ( т. е. без необходимости ввода первой цифры ), 2) возможность продолжать вычисления после нажатия кнопки « Равно ».
Пожалуйста, опубликуйте свои отзывы по текущей теме статьи. За комментарии, подписки, лайки, дизлайки, отклики низкий вам поклон!
Дайте знать, что вы думаете по данной теме в комментариях. Мы крайне благодарны вам за ваши комментарии, дизлайки, отклики, лайки, подписки!
Полный список
Попробуем написать простейший калькулятор, который берет два числа и проводит с ними операции сложения, вычитания, умножения или деления. Результат отображает в виде полного выражения.
Project name: P0191_SimpleCalculator
Build Target: Android 2.3.3
Application name: SimpleCalculator
Package name: ru.startandroid.develop.simplecalculator
Create Activity: MainActivity
Откроем main.xml и нарисуем экран:
Тут есть два поля ввода, 4 кнопки и текстовое поле для вывода. Обратите внимание на атрибут inputType для EditText. Он задает тип содержимого. Я указал numberDecimal – т.е. в поле получится ввести только цифры и запятую, буквы он не пропустит. Это удобно, не надо самому кодить различные проверки.
Для TextView указан атрибут gravity. Он указывает, как будет расположен текст в TextView. Не путайте с layout_gravity, который отвечает за размещение TextView в ViewGroup.
Теперь нам надо читать содержимое полей, определять какую кнопку нажали и выводить нужный результат. Открываем MainActivity.java и пишем код
Думаю, все понятно по каментам. Читаем значения, определяем кнопку, выполняем операцию и выводим в текстовое поле. Обработчиком нажатий на кнопки выступает Activity.
Все сохраним и запустим.
Давайте для большего функционала сделаем меню с пунктами очистки полей и выхода из приложения. Пункты будут называться Reset и Quit.
Добавим две константы – это будут ID пунктов меню.
(добавляете только строки 3 и 4)
И напишем код создания и обработки меню:
Сохраним все, запустим. Появилось два пункта меню:
Reset – очищает все поля
Quit – закрывает приложение
В качестве самостоятельной работы вы можете реализовать проверку деления на ноль. И выводить какое-нить сообщение с помощью Toast или прямо в поле результата.
На следующем уроке:
— рассмотрим анимацию View-компонентов
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Разработка андроид приложения на примере Калькулятора++. От идеи к реализации
Я, как бывший студент, а ныне инженер, часто провожу какие-либо расчёты «на лету»: будь то расчёт стоимости товара за кг, значение эффективного годового процента за кредит или построение графика распределения голосов на выборах.
После нескольких минут поиска в андроид.маркете (который просто пухнет от представленных на нём программ) было установлено с десяток самых популярных калькуляторов. Но радость оказалась не полной… Всё мне не нравилось, всё было не удобно: где дизайн подкачал, где способ ввода, где постоянные падения. Тут и родилась идея: почему бы не написать свой калькулятор, — java я знаю хорошо. Пусть с андроид не работал — но зато опыта наберусь и скилы прокачаю, да и инструмент хороший получу.
Анализ
Более подробно остановлюсь на анализе нескольких приложений на андроид.маркете:
1. RealCalc Scientific Calculator (анроид.маркет)
Первым в списке идёт RealCalc — классический калькулятор с числом установок 5-10 млн. Средняя оценка: 4.7.
2. Cube Calculator Free (андроид.маркет)
Число установок: 100-500 тыс. Средняя оценка: 4.8
3. Handy Calc (андроид.маркет)
Число установок: 0.5 — 1 млн. Средняя оценка: 4.7
Общий итог:
Все рассмотренные выше приложения имеют один существенный недостаток — они имеют плохо проработанный интерфейс: где-то непонятно, что нужно нажимать, где-то нужно переключаться между экранами, где-то для доступа к функционалу нужно пройти последовательность действий, а где-то на экран не помещается весь результат вычислений.
Поняв эту простую истину, я решил, что основным отличием моего приложения будет именно продуманный интерфейс. В конце статьи я приведу примеры того, что мне удалось добиться.
Разработка
Разработку приложения я начал ещё в июне 2011 в свободное от работы время. В качестве движка вычислений был выбран JSCL; элементы GUI по большей части написаны мною, некоторые позаимствованы с просторов интернета; библиотека для построения графиков — AChartEngine (хотя не идеальна и имеет ряд довольно странных решений). Здесь стоит, наверное, добавить, что хотя я и выбрал стороннюю библиотеку для вычислений, в скором времени мне пришлось её форкать и исправлять баги/дописывать нужный функционал (она, кстати, сейчас доступна у меня на github’е).
В общем, было много фана, получено море опыта, выпита не одна чашка ароматного кофе и проведена не одна ночь перед компьютером.
Сейчас проект находится в активной фазе — продолжает дописываться функционал, почти каждую неделю выходят обновления с новыми фичами, фиксятся баги.
На момент написания статьи общее число собственных java классов в проекте равно 680 (включая внтренние классы), из которых 222 — в основном андроид-модуле (исходники), 276 — в модуле JSCL (исходники), 182 — в общем модуле (исходники).
Релиз
В какой-то момент времени я понял, что приложение уже готово для выпуска в массы. И после тестирования на устройствах коллег и знакомых Калькулятор++ появился в андроид.маркете.
Было это 16 октября.
Что получилось?
Как я писал выше — основной ставкой в Калькуляторе++ (далее К++) был продуманный интерфейс.
Как вы видите, в списке представлено довольно много простых вещей. Все вместе они сильно влияют на взаимодействие пользователя с приложением, доставляя первому удовольствие от работы, не мешая выполнять нужные операции быстро и эффективно.
Продвижение
График установок приложения:
Примечание: испанский язык появится только со следующей версии.
В этой главе также отмечу своё удивление тому, что для каждой страны продвигать приложение придётся отдельно (для меня было открытием то, что приехав в Европу и зайдя в андроид.маркет с местного компьютера, я не нашёл Калькулятор++ даже в первых 500 новых приложений). Конечно это хорошо для сильно локализованных приложений (расписания, переводчики и т. д.), но для приложений общего назначений — некий барьер.
Что дальше?
А дальше только одно — продолжение разработки; улучшение и допиливание приложения, вылизывание его кода для еще более удобной работы конечного пользователя.
Считаю, что Калькулятор++ — достойный конкурент на рынке калькуляторов в андроид.маркете, и нисколько не жалею о начале его разработки.
С вопросами, замечаниями, пожеланиями — связанными и не связанными с К++ — обращайтесь в личку или на почту, пишите комментарии. Обязательно отвечу =)
UPD Спасибо всем за замечания, ошибки, пожелания и комментарии.
UPD 2 По просьбе читателей добавил QR-code
UPD 3 На github’е есть небольшой issue tracker. Если не сложно, вводите туда баги, желаемые фичи и т.д., там будет проще мне с вами связаться + ни один запрос не будет пропущен.
Урок №4 Создаем простенький калькулятор для Android
Свежайшая халява, слив купонов от курьеров в KFC + временно бесплатные игры и приложения на Android
Подборка временно бесплатных игр и приложений на Android
1) Бесплатно получаем стикеры ВКонтакте: «Рысёнок Озончик» от «OZON»Переходим по ссылке и пишем боту любое сообщение.
2) В приложении Макдоналдса отдают 2 Монблан Бургера за 395р или 2 Монблан Бургера с Курицей за 375р
2. Устанавливаем программу и вводим в поле «License Emails»: giveaway@giveawayoftheday.com
6) Бесплатно (вместо 549р) 30 дней слушаем аудиокниги на StorytelПереходим на cайт Storytel и жмём «Зарегистрироваться»
170 000 аудиокниг на русском и английском без рекламы и уведомлений, можно загрузить книгу и слушать без интернета
8) Абонентам Теле2Получаем 10 Гб интернета за прохождение опроса
Переходим по ссылке и пишем: Опрос от Tele2
9) Получаем бесплатное комбо в Макдональдсе 🍔1. Переходим по этой ссылке
2. Вводи купон: WVYF66CXK2
3. Получаем баллы Яндекс.Плюса
4. Указываем оплату в Яндекс еде баллами Яндекс Плюса
2. Скачиваем Coolmuster Android Backup Manager, устанавливаем и переходим в раздел «Register»;
3. Вводим ключ, полученный после регистрации.
11) В Подарок (вместо 399р) получаем 30 дней подписки на онлайн-кинотеатр iviДля активации переходим по этой ссылке
❗️Акция доступна как новым пользователям, так и тем, у кого не было подписки в течение 90 последних дней
12) Бесплатно (вместо 435р) получаем Train Simulator: Amtrak P42DC 50th Anniversary Collector’s Edition в Steam❗️Это дополнение. Основная игра платная
Мой клиент для Flicks
Сегодня хочу поделиться своей небольшой программой под Android
Недавно я узнал про один онлайн кинотеатр или агрегатор, сервис. Не знаю как точно его назвать.
Что мне понравилось в нем. Это то, что каталогом данного кинотеатра является кинопоиск.
Суть проста выбираешь на кинопоиске нужный фильм и немного изменяешь ссылку. Вуаля, можно смотреть интересующий вас фильм или сериал.
Сразу скажу, что к этим ребятам я не имею никакого отношения. Просто считаю идею очень интересной. Спасибо за реализацию.
Все ничего, но с телефона не очень удобно заниматься исправлением этих ссылок. Почему бы не написать небольшую програму, по сути это браузер и одна кнопка. Выбираем фильм и нажимаем кнопку в нижнем правом углу. Все. Программа изменит ссылку и перейдет по ней. Можно смотреть.
Надеюсь идея вам так же зайдет. Если так, поставьте плючик за старания, мне будет приятно.
Подборка временно бесплатных игр и приложений + свежая халява, скидки, промокоды (ноябрь 2021)
Временно бесплатные игры и приложения для Android:
Промокоды для популярных маркетплейсов:
1. Промокоды для заказа в мобильном приложении AliExpress (суммируются с купонами и текущими распродажами)
Для новых пользователей приложения:
Для всех пользователей:
ALI11KOP150 – cкидка 150₽ (на заказ от 1000₽);
ENERGO1111OLD – Скидка 200₽ (на заказ от 1500₽;
OLDNOV – Скидка 500₽ (на заказ от 1000₽), для всех, кто не делал заказы 6 месяцев;
2. Промокоды для заказа в Яндекс Маркет:
Промокоды для заказа готовой еды и продуктов:
1. Промокоды на скидку до 35% при заказе в приложении KFC:
2. Скидка до 38% при заказе в Domino’s Pizza:
3. Скидка в приложении Магнит Доставка:
4. Скидка 20% в магазине Магнолия:
Переходим по специальной ссылке и сохраняем купон (фотографируем или делаем снимок экрана)
Показываем данный купон в магазине на кассе и получаем скидку 20% на любые товары с белым ценником при покупке на сумму от 700 рублей.
Промокоды на бесплатные подписки и сервисы:
1. Бесплатная подписка на КиноПоиск HD до конца года (для новых)
2. Бесплатная подписка на IVI на 30 дней для всех пользователей без активной подписки;
3. Бесплатная подписка на Storytel (для новых);
4. Промокоды на бесплатные книги в ЛитРес для всех:
READATHOME21 / ENVYBOX2021 / WEBMONEY / VLINK / WORLD
Промокоды на для магазинов косметики и товаров для девушек:
1. Дополнительная скидка 8% к распродаже до 80% в Л’Этуаль
2. Скидка 500₽ на первый заказ от 2000₽ в приложении Магнит Доставка (заказ из раздела Магнит Косметик);
3. Скидка 40% на все в магазине Clinique;
4. Скидка 20% на всё + салфетки для снятия макияжа в подарок при заказе на сумму от 3000 руб. в M.A.C;
Промокоды для заказа лекарств в аптечных сервисах:
1. Промокоды для СБЕР ЕАПТЕКА:
2. Промокод для заказа в мобильном приложении Ютека:
3. Промокод для заказа в сервисе Apteka.ru :
❗ ❗ ❗ Все свежие промокоды и акции собираю в своем телеграм канале: WEBFREE
(переходи и смотри закрепленное сообщение)
Временно бесплатные игры и приложения для Android:
Промокоды для популярных сервисов:
1. Промокоды для онлайн кинотеатров:
2. Промокоды для заказа в мобильном приложении AliExpress (суммируются с купонами и текущими распродажами, действуют до 31.10)
Для новых пользователей приложения:
Для всех пользователей:
OLDNOV – Скидка 500₽ при заказе от 1000₽ для тех кто не делал заказы 6 месяцев;
3. Промокоды на скидку до 35% при заказе в приложении KFC:
4. Промокоды для заказа в Domino’s Pizza
Подписки, приложения и акции:
— Переходим на страницу промоакции и заполняем форму;
— Скачиваем программу по ссылке и вставляем полученный на почте код.
2. Дебетовая карта Tinkoff Black с вечным БЕСПЛАТНЫМ обслуживанием:
Переходим на страницу акции и заказываем карту с обслуживаением за 0р. в месяц (вместо 99р. в месяц)
3. Бесплатно (вместо 999р) получаем доступ к сервису облачного гейминга Geforce Now на 3 месяца
— Скачиваем любой VPN и ставим местоположение: Сингапур;
— После регистрации находим вкладку «Plans» и выбираем «Free Trial»;
— Вводим данные карты и получаем аккаунт с GFN Premium.
— Отключаем автопродление подписки в профиле.
4. Акции от ЯндексПлюс:
— Получаем бесплатную подписку до конца 2021г. Переходим на страницу активации кодов и активируем код: VQQL6VXUDS
— Получаем годовой сертификат подписки на ЯндексПлюс всего за 1990 руб. (вместо 2388 руб., скидка 30%)Переходим на страницу акции по этой ссылке и оформляем сертификат.
5. Получаем 30 дней БЕСПЛАТНОЙ подписки на Storytel
Переходим по ссылке на страницу акции и забираем бесплатную подписку.
❗ ❗ ❗ Все свежие промокоды и акции собираю в своем телеграм канале: WEBFREE
(переходи и смотри закрепленное сообщение)
Продолжение поста «Копируем ключ от домофона MIIFARE телефоном MCT»
Решил не затягивать.
Еще встречается другая проблема.
Приложение RFID tools позволяет нам работать с внешними модулями. Вообще то и MCT можно заставить работать с внешними устройствами, но здесь это реализовано лучше. Нам понадобится модуль PN532, немного доработанный. И обязательно наличие OTG в телефоне или планшете. Можно все сделать через блютус модуль, вроде HC-05/06, но лично мне такой вариант не понравился. Начинаем.
Предположим, что у вас получилось считать свою метку формата мифайр. Но так уж вышло, что заготовки в наличии только типа zero, те которые поддерживают магические команды. У них пишется нулевой блок нулевого сектора, но через MCT сделать это вы не сможете. И здесь нас выручит ARC122, либо, что более доступно и популярно, модуль PN532. Приложение поддерживает массу модулей, даже proxmark, правда не все версии. Главное меню и пункт TOOLS.
В меню мы можем выбрать подключенное устройство. Лично я использовал только PN532 и телефон. Но последний с задачей не справляется. В меню TOOLS можно посмотреть и отредактировать дамп и добавить свои ключи для чтения метки.
Заходим в PN532 и выбираем свое подключение. Далее нас бросает в такое меню.
NFC-list позволяет прочитать отрытую информацию из нулевого блока нулевого сектора. MFOC и MFCUK это доступные для нас атаки на защиту метки. Я их не использую, ибо нет необходимости и скорость работы неважная. Но поиграть со своим ключем вы можете. Нас же интересует главное меню Reader. Заходим. По порядку, вначале мы можем выбрать список ключей. Если метка закрытая, а ключи у нас уже есть, полученные например сниффером Копировальщик mifare 1k / сниффер то мы можем запросто добавить их в меню TOOLS вначале и теперь выбрать их для чтения или перезаписи метки. Далее идет ползунок, при нажатии на который, программа будет читать только 1 сектор, можно самому выбрать какой. Нас в основном интересует сектор 0. Это все касаемо чтения. Далее идут опции записи. Можно записать 0 блок, все блоки или конкретный. Я обычно пишу все и проходит гладко. Здесь же можно выбрать дамп, например заранее импортированный из приложения MCT. Приведу пример.
У меня есть дамп от моего подъезда и заготовка zero новая с дефолтными ключами. Выбираем стандартные ключи вверху, оставляем переключатель на записи всего дампа. Предварительно нужно положить заготовку на считыватель и нажать кнопку WRITE. После окончания записи высветится уведомление. Можно будет прочитать эту же заготовку приложением MCT, или RFID TOOLS. Смотря где у вас забиты ключи, от исходного ключа, ведь теперь для чтения первого сектора, вам они нужны. Победа, мы записали метку zero с телефона без ПК и дорогих устройств.
Предыдущие посты по теме RFID:
Напомню, что как раз сниффер позволяет вытянуть ключи из считывателя. Какой бы защищенной не была метка. Как всегда, общение в комментариях. По делу писать, есть контакт в профиле. Вопросы здесь. Можете предлагать темы для следующих постов. Спасибо за плюсы, подписки и обсуждения в комментариях. А я кажется за неделю оккупировал Лигу Радиолюбителей.
Копируем ключ от домофона MIIFARE телефоном MCT
Продолжаем тему постов про rfid.
Когда нибудь напишу объёмный пост, где постараюсь систематизировать знания. Там будет много теории и практической информации. А пока встречайте мини пост про приложение MIFARE Classic Tool. В недавнем посте про сниффер, случился такой диалог в комментариях.
Копировальщик mifare 1k / сниффер
Казалось бы, ситуация простая, решение тоже. Но как оказывается, люди не очень знают об этом приложении и не умеют пользоваться им. Ещё оно удобно, для проверки стандарта ключа. Если приложив метку, мы сможем считать uid функцией display tag info из настроек, то у нас mifare на частоте 13.56 МГц. Кстати, mifare тоже бывают разные, на 1k свет клином не сошелся. Возможно напишу об этом позже.
Предыдущие почты на тему rfid:
Копировальщик ключей домофона
Делаем ключ 3 в 1 (шлагбаум, домофон и калитка)
Проект компактного копировальщика ключей EM/Ibutton
Ключ от домофона EM-MARINE 2 в 1
Копировальщик mifare 1k / сниффер
Спасибо за внимание, плюсики и подписки. Мой контакт в профиле. Пишите, что ещё вам интересно касаемо темы rfid и других. Задавайте вопросы и комментируйте. Ваша активность это основной мотиватор для продолжения.