Oprettelse af en tipberegner i Kotlin: hvordan fungerer det?
Vi fortæller dig, hvordan du opretter en simpel applikation til beregning af tips i Kotlin. Mere præcist, Kotlin 1.3.21, Android 4, Android Studio 3. Artiklen vil først og fremmest være interessant for dem, der starter deres rejse i Android-applikationsudvikling. Det giver dig mulighed for at forstå, hvad og hvordan det fungerer inde i applikationen.
Denne lommeregner vil være praktisk, når du skal beregne mængden af drikkepenge fra en virksomhed, der beslutter sig for at bruge tid på en restaurant eller cafe. Selvfølgelig efterlader ikke alle altid et tip til tjenerne; dette er mere en vestlig tradition, men processen med at udvikle en sådan applikation er under alle omstændigheder interessant.
Påmindelse:for alle læsere af "Habr" - en rabat på 10 rubler ved tilmelding til ethvert Skillbox-kursus ved hjælp af "Habr"-kampagnekoden.
Du indtaster den ønskede procentdel af det samlede beløb, antallet af mødedeltagere, og får resultatet - mængden af drikkepenge du skal efterlade.
Kom i gang
Den komplette applikationsgrænseflade ser således ud:
Første handling - download af projektbasen. Åbn den i Android Studio 3.0 eller nyere. Vi bygger og lancerer projektet og ser en hvid skærm. Alt er fint, sådan skal det være.
Brugerhandlinger er skrevet i projektet i kronologisk rækkefølge for at gøre alt klart. For at se den skal du åbne Vis -> Værktøjsvinduer -> TODO.
Vi studerer projektet og åbner colors.xml for at evaluere farvepaletten. strings.xml indeholder tekstdata (signaturer), og styles.xml indeholder flere skrifttypeskabeloner.
Udvikling af omkostningssektionen
Åbn activity_main.xml og tilføj koden nedenfor til LinearLayout (#1):
Da applikationens hovedopgave er at beregne individuelle omkostninger for hver deltager i en restaurantsammenkomst, spiller costPerPersonTextView hovedrollen.
EditText begrænser input til én linje, denne parameter skal indstilles til NumberDecimal inputType.
Vi starter projektet til testen og indtaster parametrene for generel skade (brudte kopper, tallerkener osv.)
Udvikling af afsnittet "Mennesker og tips".
For at tilføje et tipvolumenvalg skal du indsætte koden nedenfor i den nye LinearLayout-sektion (#4):
Denne del af koden er nødvendig for nøjagtigt at beregne drikkepengebeløbet. Standardtekstværdien er 20. ImageButtons er forsynet med ikoner i en mappe med skrivetilladelser.
Kopier afsnittet fuldstændigt og tilføj følgende (#5):
Med hensyn til knapper og kontakter organiserer Kotlin alt meget fedt! Tilføj koden nedenfor til alle stignings- og reduktionsfunktioner
(#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 inkrementfunktionerne med maksimale værdier (MAX_TIP & MAX_PEOPLE). Derudover beskytter koden dekrementeringsfunktioner med minimumsværdier (MIN_TIP & MIN_PEOPLE).
Nu forbinder vi knapperne med lyttere i initViews-funktionen (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Du kan nu tilføje samlede skader, tips og antallet af mødedeltagere. Nå, nu er det vigtigste...
Omkostningsberegning afsnit
Denne kode beregner omkostninger (#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)
}
Nå, her kaldes en funktion, der gør det muligt at tage højde for antallet af personer i virksomheden og beregne tips (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Lad os starte applikationen. Det ser ud og fungerer godt. Men det kunne være bedre.
Hvis du forsøger at fjerne regningsbeløbet og derefter øge antallet af tips eller venner, vil applikationen gå ned, fordi der endnu ikke er nogen kontrol for nulomkostningsværdien. Desuden, hvis du forsøger at ændre regningsbeløbet, vil gebyrerne ikke blive opdateret.