Jak stworzyć prosty kalkulator na Androida za pomocą Android Studio
Opublikowany: 2017-07-06W poprzednim artykule opisałem szczegółowe kroki, jak stworzyć prostą aplikację na Androida. W tej konkretnej aplikacji wyjaśniłem również koncepcje przycisku androida i podstawowe koncepcje androida.
Wszystkie inne moje artykuły znajdziesz w dziale Android.
W tym artykule stworzymy calculator android app
. Jest to prosty kalkulator o ograniczonej funkcjonalności.
Zanim przejdziemy dalej, byłoby miło przejrzeć cały samouczek HelloWorld. Oto link ponownie: Moja pierwsza aplikacja HelloWorld na Androida
- Jak zbudować prostą aplikację kalkulatora – pełny samouczek
- Tworzenie prostego kalkulatora za pomocą Android Studio
- Programowanie na Androida: tworzenie podstawowego kalkulatora
- Utwórz prosty kalkulator na Androida
- Jak stworzyć aplikację Kalkulator na Androida
Zacznijmy od naszej aplikacji kalkulatora na Androida:
Krok 1
- Otwórz swoje Studio Android
- Kliknij Rozpocznij nowy projekt Android Studio.
- Podaj nazwę aplikacji
CrunchifyCalculator
i pozostaw pozostałe pola puste, a następnie kliknij DALEJ.
Krok 2
- Wybierz Minimum SDK
API 15: Android 4.0.3(IceCreamSandwich)
. Wybrałem API 15 (IceCreamSandwich), ponieważ obejmuje prawie 94% urządzenia i ma prawie wszystkie funkcje. Jeśli chcesz objąć urządzenie w 100%, możesz wybrać API 8: Android 2.2 (Froyo).
Krok 3
- Wybierz
Empty Activity
i kliknij DALEJ. - Pozostaw nazwę działania
MainActivity
i pozostaw wszystko bez zmian. Kliknij Zakończ.
Krok 4
- Po kliknięciu przycisku Zakończ zbudowanie Aktywności i plików zajmuje około ~2 minut.
- Oto ostateczna struktura projektu dla Twojej aplikacji.
Krok-5
- Teraz musimy dodać nasz kod Java w naszym pliku MainActivity.java.
- Więc otwórz plik
MainActivity.java
z lewej strony IDE (app -> java -> com.crunchify.tutorials.crunchifycalculator -> MainActivity.java)
Wyjaśnienie podświetlonej linii znajdziesz pod kodem.
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 ( ) + "." ) ; } } ) ; } } |
Tutaj mamy 1 EditText. Określa rodzaj treści.
Rozumiemy kod trochę więcej.

- Linia 11 – 14: Tutaj utworzyliśmy odniesienie do przycisków i edycji tekstu.
- Linia 16: Tutaj stworzyliśmy dwie zmienne zmiennoprzecinkowe jako wartość1 i wartość2.
- Linia 21: Zastępujemy metodę onCreate(), która jest metodą klasy Activity.
- Linia 45 – 50: Ustawiamy onClickListener na Button1. Jeśli klikniemy Button1, wyświetli się EditText.
- Dla każdego przycisku zaimplementowaliśmy tę samą logikę.
- Linia 115 – 127: Tutaj ustawiliśmy słuchacz kliknięć na przycisku Dodaj.
- Tutaj stawiamy warunek, ponieważ jeśli EditText ma wartość Null, to ustawiamy EditText jako pustą wartość. W przeciwnym razie dodajemy dwie wartości, które są klikane przed kliknięciem przycisku dodawania i po kliknięciu przycisku dodawania.
- Ustawiamy również wartość logiczną
crunchifyAddition
na True. To prawda oznacza, że kliknięto przycisk dodawania i będzie to używane, gdy użytkownik kliknie przycisk „=”. - Wprowadzamy tę samą logikę dla innych przycisków, również takich jak buttonSub, ButtonMul, buttonDivision.
- Linia 156 – 183: Tutaj ustawiamy clickListener na przycisku „=”. Tutaj umieszczamy warunek taki, jak jeśli użytkownik kliknie przycisk Dodaj, wartość
crunchifyAddition
jest ustawiona na True na odbiorniku kliknięć przycisku Dodaj. - Zgodnie z tym, odpowiednia akcja zostanie wykonana odpowiednio do klikniętego przycisku.
1 2 3 4 |
if ( crunchifyAddition == true ) { crunchifyEditText . setText ( mValueOne + mValueTwo + "" ) ; crunchifyAddition = false ; } |
jeśli przycisk Dodaj zostanie kliknięty przed przyciskiem „=”, zostanie wykonana akcja Dodaj, jak widać powyżej.
- Po wykonanej akcji ustawiamy wartość
crunchifyAddition
na false, dzięki czemu możemy ponownie wykonać akcję Add.
Poniżej znajduje się plik układu, z pomocą w projektowaniu interfejsu dla kalkulatora:
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 > |
Teraz wszystko powinno działać poprawnie i jesteśmy gotowi do uruchomienia naszej aplikacji kalkulatora na Androida. Do uruchomienia naszej aplikacji użyłem mojego telefonu komórkowego, możesz użyć emulatora lub swojego urządzenia.
Uruchamianie naszej aplikacji Kalkulator na Androida
- Kliknij Menedżera urządzeń Android. Po wybraniu własnego urządzenia w oknie
Android device manager
kliknijSTART
. - Kliknij przycisk Uruchom.
- Wybierz swoje urządzenie lub emulator i kliknij OK.
- Teraz możesz zobaczyć aplikację kalkulatora na Androida działającą jako ten zrzut ekranu.
Gratulacje!! Jeśli wykonałeś wszystkie kroki i osiągnąłeś ten punkt, oznacza to, że wykonałeś wszystkie kroki poprawnie, a aplikacja Kalkulator na Androida działa poprawnie.