Bygge en tipskalkulator i Kotlin: hvordan fungerer det?
Vi viser deg hvordan du lager en enkel tipsberegningsapplikasjon i Kotlin. For å være mer presis, Kotlin 1.3.21, Android 4, Android Studio 3. Artikkelen vil først og fremst være interessant for de som starter reisen sin med å utvikle Android-applikasjoner. Den lar deg forstå hva og hvordan som fungerer inne i applikasjonen.
En slik kalkulator er nyttig når du skal regne ut mengden tips fra et selskap som bestemmer seg for å tilbringe tid på en restaurant eller kafé. Selvfølgelig, ikke alle og ikke alltid forlater te til servitører, dette er mer en vestlig tradisjon, men prosessen med å utvikle en slik applikasjon er interessant i alle fall.
Vi minner om:for alle lesere av "Habr" - en rabatt på 10 000 rubler når du melder deg på et hvilket som helst Skillbox-kurs ved å bruke kampanjekoden "Habr".
Du legger inn ønsket prosentandel av totalbeløpet, antall deltakere på møtet og får resultatet – mengden tips som skal stå igjen.
Komme i gang
Hele grensesnittet til appen ser slik ut:
Første handling - Last ned prosjektbasen. Åpne den i Android Studio 3.0 eller nyere. Vi bygger og driver prosjektet og ser en hvit skjerm. Alt er bra, som det skal være.
Brukerhandlinger skrives i prosjektet i kronologisk rekkefølge, slik at alt er klart. For å se den, åpne Vis -> Verktøyvinduer -> TODO.
Vi studerer prosjektet og åpner colors.xml for å evaluere fargepaletten. strings.xml inneholder tekstdata (bildetekster), og styles.xml inneholder flere skriftmaler.
Kostnadsseksjonsutvikling
Åpne activity_main.xml og legg til koden nedenfor i LinearLayout (#1):
Siden hovedoppgaven til applikasjonen er å beregne individuelle kostnader for hver av deltakerne i samlingene i restauranten, spiller costPerPersonTextView hovedrollen.
EditText begrenser inndata til én linje, denne parameteren må settes til NumberDecimal inputType.
Vi starter prosjektet for testen og legger inn parametrene for den totale skaden (ødelagte kopper, tallerkener, etc.)
Utvikling av delen "Mennesker og tips".
For å legge til en tipsbeløpsvelger, lim inn koden nedenfor i en ny LinearLayout-seksjon (#4):
Denne kodebiten er nødvendig for nøyaktig å beregne tipsbeløpet. Standard tekstverdi er 20. ImageButtons er utstyrt med ikoner i en mappe med skriverettigheter.
Når det gjelder knapper og brytere, har Kotlin alt organisert veldig kult! Legg til koden nedenfor til alle funksjoner for økning og reduksjon
(#9 –#12):
private fun incrementTip() {
if (tipPercent != MAX_TIP) {
tipPercent += TIP_INCREMENT_PERCENT
tipTextView.text = String.format("%d%%", tipPercent)
}
}
private fun decrementTip() {
if (tipPercent != MIN_TIP) {
tipPercent -= TIP_INCREMENT_PERCENT
tipTextView.text = String.format("%d%%", tipPercent)
}
}
private fun incrementPeople() {
if (numberOfPeople != MAX_PEOPLE) {
numberOfPeople += PEOPLE_INCREMENT_VALUE
numberOfPeopleTextView.text = numberOfPeople.toString()
}
}
private fun decrementPeople() {
if (numberOfPeople != MIN_PEOPLE) {
numberOfPeople -= PEOPLE_INCREMENT_VALUE
numberOfPeopleTextView.text = numberOfPeople.toString()
}
}
Her beskytter koden inkrementfunksjoner med maksimale verdier (MAX_TIP & MAX_PEOPLE). I tillegg beskytter koden dekrementeringsfunksjoner med minimumsverdier (MIN_TIP & MIN_PEOPLE).
Nå binder vi knappene til lytterne i initViews-funksjonen (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Du kan nå legge til totalskade, tips og antall møtedeltakere. Vel, nå er det viktigste...
Kostnadsdelen
Denne koden beregner kostnadene (#14):
private fun calculateExpense() {
val totalBill = billEditText.text.toString().toDouble()
val totalExpense = ((HUNDRED_PERCENT + tipPercent) / HUNDRED_PERCENT) * totalBill
val individualExpense = totalExpense / numberOfPeople
expensePerPersonTextView.text = String.format("$%.2f", individualExpense)
}
Vel, her kalles det en funksjon som gjør det mulig å ta hensyn til antall personer i bedriften og beregne tipset (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Vi starter applikasjonen. Det ser og fungerer utmerket. Men det kunne vært bedre.
Hvis du prøver å fjerne regningsbeløpet og deretter øke antall hint eller venner, vil appen krasje fordi det ikke er noen sjekk for null kostnader ennå. I tillegg, hvis du prøver å endre fakturabeløpet, vil ikke kostnadene bli oppdatert.