Как создать простое Android-приложение «Калькулятор» с помощью Android Studio
Опубликовано: 2017-07-06В моей предыдущей статье я описал подробные шаги о том, как создать простое приложение для Android. В этом конкретном приложении я также объяснил концепции кнопки Android и основные концепции Android.
Все остальные мои статьи вы можете найти в разделе Android.
В этой статье мы создадим приложение- calculator android app
. Это простой калькулятор с ограниченным функционалом.
Прежде чем мы продолжим, было бы неплохо пройти полное руководство по HelloWorld. Вот еще раз ссылка: Мое первое приложение HelloWorld для Android.
- Как создать простое приложение-калькулятор — полное руководство
- Создание простого калькулятора с помощью Android Studio
- Android-разработка: создание базового калькулятора
- Создайте простое приложение Android-калькулятора
- Как создать приложение-калькулятор для Android
Давайте начнем с нашего приложения калькулятора для Android:
Шаг 1
- Откройте свою Android-студию
- Нажмите «Начать новый проект Android Studio».
- Дайте название вашему приложению
CrunchifyCalculator
и оставьте другие поля пустыми, как есть, затем нажмите «ДАЛЕЕ».
Шаг 2
- Выберите минимальный
API 15: Android 4.0.3(IceCreamSandwich)
. Я выбрал API 15 (IceCreamSandwich), потому что он покрывает почти 94% устройств и имеет почти все функции. Если вы хотите покрыть 100% устройство, вы можете выбрать API 8: Android 2.2 (Froyo).
Шаг 3
- Выберите
Empty Activity
действие и нажмите ДАЛЕЕ. - Оставьте имя
MainActivity
как есть и оставьте все как есть. Нажмите Готово.
Шаг-4
- После нажатия кнопки «Готово» создание Activity и файлов занимает около 2 минут.
- Вот окончательная структура проекта для вашего приложения.
Шаг-5
- Теперь нам нужно добавить наш код Java в наш файл MainActivity.java.
- Итак, откройте файл
MainActivity.java
с левой стороны IDE (приложение -> java -> com.crunchify.tutorials.crunchifycalculator -> MainActivity.java)
Вы можете найти объяснение выделенной строки под кодом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
package com . crunchify . tutorials . crunchifycalculator ; import android . os . Bundle ; import android . support . v7 . app . AppCompatActivity ; import android . view . View ; import android . widget . Button ; import android . widget . EditText ; public class MainActivity extends AppCompatActivity { Button button0 , button1 , button2 , button3 , button4 , button5 , button6 , button7 , button8 , button9 , buttonAdd , buttonSub , buttonDivision , buttonMul , button10 , buttonC , buttonEqual ; EditText crunchifyEditText ; float mValueOne , mValueTwo ; boolean crunchifyAddition , mSubtract , crunchifyMultiplication , crunchifyDivision ; @ Override protected void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; setContentView ( R . layout . activity_main ) ; button0 = ( Button ) findViewById ( R . id . button0 ) ; button1 = ( Button ) findViewById ( R . id . button1 ) ; button2 = ( Button ) findViewById ( R . id . button2 ) ; button3 = ( Button ) findViewById ( R . id . button3 ) ; button4 = ( Button ) findViewById ( R . id . button4 ) ; button5 = ( Button ) findViewById ( R . id . button5 ) ; button6 = ( Button ) findViewById ( R . id . button6 ) ; button7 = ( Button ) findViewById ( R . id . button7 ) ; button8 = ( Button ) findViewById ( R . id . button8 ) ; button9 = ( Button ) findViewById ( R . id . button9 ) ; button10 = ( Button ) findViewById ( R . id . button10 ) ; buttonAdd = ( Button ) findViewById ( R . id . buttonadd ) ; buttonSub = ( Button ) findViewById ( R . id . buttonsub ) ; buttonMul = ( Button ) findViewById ( R . id . buttonmul ) ; buttonDivision = ( Button ) findViewById ( R . id . buttondiv ) ; buttonC = ( Button ) findViewById ( R . id . buttonC ) ; buttonEqual = ( Button ) findViewById ( R . id . buttoneql ) ; crunchifyEditText = ( EditText ) findViewById ( R . id . edt1 ) ; button1 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "1" ) ; } } ) ; button2 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "2" ) ; } } ) ; button3 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "3" ) ; } } ) ; button4 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "4" ) ; } } ) ; button5 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "5" ) ; } } ) ; button6 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "6" ) ; } } ) ; button7 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "7" ) ; } } ) ; button8 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "8" ) ; } } ) ; button9 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "9" ) ; } } ) ; button0 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "0" ) ; } } ) ; buttonAdd . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { if ( crunchifyEditText == null ) { crunchifyEditText . setText ( "" ) ; } else { mValueOne = Float . parseFloat ( crunchifyEditText . getText ( ) + "" ) ; crunchifyAddition = true ; crunchifyEditText . setText ( null ) ; } } } ) ; buttonSub . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { mValueOne = Float . parseFloat ( crunchifyEditText . getText ( ) + "" ) ; mSubtract = true ; crunchifyEditText . setText ( null ) ; } } ) ; buttonMul . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { mValueOne = Float . parseFloat ( crunchifyEditText . getText ( ) + "" ) ; crunchifyMultiplication = true ; crunchifyEditText . setText ( null ) ; } } ) ; buttonDivision . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { mValueOne = Float . parseFloat ( crunchifyEditText . getText ( ) + "" ) ; crunchifyDivision = true ; crunchifyEditText . setText ( null ) ; } } ) ; buttonEqual . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { mValueTwo = Float . parseFloat ( crunchifyEditText . getText ( ) + "" ) ; if ( crunchifyAddition == true ) { crunchifyEditText . setText ( mValueOne + mValueTwo + "" ) ; crunchifyAddition = false ; } if ( mSubtract == true ) { crunchifyEditText . setText ( mValueOne - mValueTwo + "" ) ; mSubtract = false ; } if ( crunchifyMultiplication == true ) { crunchifyEditText . setText ( mValueOne * mValueTwo + "" ) ; crunchifyMultiplication = false ; } if ( crunchifyDivision == true ) { crunchifyEditText . setText ( mValueOne / mValueTwo + "" ) ; crunchifyDivision = false ; } } } ) ; buttonC . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( "" ) ; } } ) ; button10 . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { crunchifyEditText . setText ( crunchifyEditText . getText ( ) + "." ) ; } } ) ; } } |
Здесь у нас есть 1 EditText. Он определяет тип содержимого.
Давайте разберемся с кодом немного больше.

- Строка 11 – 14: Здесь мы создали ссылку на кнопки и EditText.
- Строка 16: Здесь мы создали две переменные с плавающей запятой для значений value1 и value2.
- Строка 21: мы переопределяем метод onCreate(), который является методом класса Activity.
- Строка 45 — 50: мы устанавливаем onClickListener на Button1. Если мы нажмем Button1, отобразится EditText.
- Мы реализовали одинаковую логику для каждой кнопки.
- Строка 115 – 127: Здесь мы установили прослушиватель кликов на кнопку «Добавить».
- Здесь мы ставим условие, например, если EditText имеет значение Null, тогда мы устанавливаем EditText как пустое значение. В противном случае мы добавляем два значения, которые нажимаются до нажатия кнопки добавления и после нажатия кнопки добавления.
- Мы также устанавливаем логическое значение
crunchifyAddition
в True. Это значение true означает, что кнопка добавления нажата, и это будет использоваться, когда пользователь нажимает кнопку «=». - Мы реализуем ту же логику для других кнопок, таких как buttonSub, ButtonMul, buttonDivision.
- Строка 156 — 183: Здесь мы устанавливаем clickListener на кнопку «=». Здесь мы ставим условие, например, если пользователь нажимает кнопку «Добавить», для значения
crunchifyAddition
значение «Истина» в прослушивателе кликов кнопки «Добавить». - В соответствии с этим соответствующее действие будет выполнено по нажатию кнопки.
1 2 3 4 |
if ( crunchifyAddition == true ) { crunchifyEditText . setText ( mValueOne + mValueTwo + "" ) ; crunchifyAddition = false ; } |
если кнопка «Добавить» нажата до кнопки «=», действие «Добавить» будет выполнено, как показано выше.
- После выполнения действия мы устанавливаем значение
crunchifyAddition
в false, чтобы мы могли снова выполнить действие «Добавить».
Ниже приведен файл макета, с помощью которого можно разработать внешний интерфейс для калькулятора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout xmlns : android = "http://schemas.android.com/apk/res/android" xmlns : tools = "http://schemas.android.com/tools" android : id = "@+id/relative1" android : layout_width = "match_parent" android : layout_height = "match_parent" tools : context = ".MainActivity" > < EditText android : id = "@+id/edt1" android : layout_width = "match_parent" android : layout_height = "wrap_content" / > < Button android : id = "@+id/button1" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignEnd = "@+id/button4" android : layout_alignRight = "@+id/button4" android : layout_below = "@+id/edt1" android : layout_marginTop = "94dp" android : text = "1" / > < Button android : id = "@+id/button2" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignTop = "@+id/button1" android : layout_toLeftOf = "@+id/button3" android : layout_toStartOf = "@+id/button3" android : text = "2" / > < Button android : id = "@+id/button3" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignTop = "@+id/button2" android : layout_centerHorizontal = "true" android : text = "3" / > < Button android : id = "@+id/button4" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_below = "@+id/button1" android : layout_toLeftOf = "@+id/button2" android : text = "4" / > < Button android : id = "@+id/button5" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignBottom = "@+id/button4" android : layout_alignLeft = "@+id/button2" android : layout_alignStart = "@+id/button2" android : text = "5" / > < Button android : id = "@+id/button6" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignLeft = "@+id/button3" android : layout_alignStart = "@+id/button3" android : layout_below = "@+id/button3" android : text = "6" / > < Button android : id = "@+id/button7" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_below = "@+id/button4" android : layout_toLeftOf = "@+id/button2" android : text = "7" / > < Button android : id = "@+id/button8" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignLeft = "@+id/button5" android : layout_alignStart = "@+id/button5" android : layout_below = "@+id/button5" android : text = "8" / > < Button android : id = "@+id/button9" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignLeft = "@+id/button6" android : layout_alignStart = "@+id/button6" android : layout_below = "@+id/button6" android : text = "9" / > < Button android : id = "@+id/buttonadd" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignEnd = "@+id/edt1" android : layout_alignRight = "@+id/edt1" android : layout_alignTop = "@+id/button3" android : layout_marginLeft = "46dp" android : layout_marginStart = "46dp" android : layout_toRightOf = "@+id/button3" android : text = "+" / > < Button android : id = "@+id/buttonsub" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignEnd = "@+id/buttonadd" android : layout_alignLeft = "@+id/buttonadd" android : layout_alignRight = "@+id/buttonadd" android : layout_alignStart = "@+id/buttonadd" android : layout_below = "@+id/buttonadd" android : text = "-" / > < Button android : id = "@+id/buttonmul" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignLeft = "@+id/buttonsub" android : layout_alignParentEnd = "true" android : layout_alignParentRight = "true" android : layout_alignStart = "@+id/buttonsub" android : layout_below = "@+id/buttonsub" android : text = "*" / > < Button android : id = "@+id/button10" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_below = "@+id/button7" android : layout_toLeftOf = "@+id/button2" android : text = "." / > < Button android : id = "@+id/button0" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignLeft = "@+id/button8" android : layout_alignStart = "@+id/button8" android : layout_below = "@+id/button8" android : text = "0" / > < Button android : id = "@+id/buttonC" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignLeft = "@+id/button9" android : layout_alignStart = "@+id/button9" android : layout_below = "@+id/button9" android : text = "C" / > < Button android : id = "@+id/buttondiv" style = "?android:attr/buttonStyleSmall" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignEnd = "@+id/buttonmul" android : layout_alignLeft = "@+id/buttonmul" android : layout_alignRight = "@+id/buttonmul" android : layout_alignStart = "@+id/buttonmul" android : layout_below = "@+id/buttonmul" android : text = "/" / > < Button android : id = "@+id/buttoneql" android : layout_width = "wrap_content" android : layout_height = "wrap_content" android : layout_alignEnd = "@+id/buttondiv" android : layout_alignLeft = "@+id/button10" android : layout_alignRight = "@+id/buttondiv" android : layout_alignStart = "@+id/button10" android : layout_below = "@+id/button0" android : layout_marginTop = "37dp" android : text = "=" / > < / RelativeLayout > |
Теперь все должно работать нормально, и мы готовы запустить наше приложение калькулятора для Android. Для запуска нашего приложения я использовал свой мобильный телефон, вы можете использовать эмулятор или свое устройство.
Запуск нашего приложения «Калькулятор» для Android
- Нажмите на диспетчер устройств Android. Выбрав пользовательское устройство в окне
Android device manager
, нажмитеSTART
. - Нажмите кнопку «Выполнить».
- Выберите Ваше устройство или эмулятор и нажмите OK.
- Теперь вы можете видеть приложение калькулятора для Android, работающее на этом снимке экрана.
Поздравляем!! Если вы выполнили все шаги и достигли этой точки, это означает, что вы выполнили все шаги правильно, и ваше приложение «Калькулятор» для Android работает нормально.