Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

RÀÀgime, kuidas luua lihtne rakendus, et arvutada jootraha Kotlin keeles. TÀpsemalt öeldes, Kotlin 1.3.21, Android 4, Android Studio 3. See artikkel on eelkÔige huvitav neile, kes alustavad oma teed Android-rakenduste arendamisel. See aitab mÔista, mis ja kuidas rakenduses töötab.

See kalkulaator tuleb kasuks, kui tuleb arvutada jootraha summa ettevÔtte jaoks, kes otsustas veeta aega restoranis vÔi kohvikus. Loomulikult ei jÀta kÔik ja alati teenindajatele jootraha, see on pigem lÀÀne traditsioon, kuid sellise rakenduse arendamise protsess on igal juhul huvitav.

Tuletame meelde: kĂ”igile «Habra» lugejatele — 10 000 rubla soodustus, kui registreerite end Skillboxi mis tahes kursusele promokoodi «Habr» abil.

Skillbox soovitab: Praktiline kursus Mobiiliarendaja PRO.

Nii nÀeb rakendus vÀlja töö kÀigus:

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Sisestate soovitud protsendi kogusummast, kohtumise osalejate arvu ja saate tulemuse — jootrahade summa, mille jĂ€tmine on soovitatav.

Alustame

Rakenduse tÀielik liides nÀeb vÀlja jÀrgmine:
Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Esimene samm — projekti aluse laadimine. Avame selle Android Studio 3.0 vĂ”i uuema versiooniga. Ehitasime ja kĂ€ivitasime projekti ning nĂ€eme valget ekraani. KĂ”ik on korras, just nii peab olema.

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Kasutaja toimingud on projektis kirja pandud kronoloogiliselt, et kÔik oleks arusaadav. Selle vaatamiseks avame View -> Tool Windows -> TODO.

Uurime projekti ja avame colors.xml, et hinnata vÀrvipaletti. Text-andmetega (nimetused) on strings.xml-is, samas styles.xml-is on mitu fondimalli.

Kulude jaotuse vÀljatöötamine

Avame activity_main.xml ja lisame allpool olevat koodi LinearLayout'i (#1):

NĂŒĂŒd on vĂ”imalik seadistada values katalooge vĂ”i eksperimenteerida vĂ€rvidega, kasutades instrumenti material.io.

Praegu nÀeb projekt vÀlja nii:

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?
Nagu nÀete, arvutatakse kulud kasutaja sisestatud andmete pÔhjal.

Arvete jaotuse vÀljatöötamine

Lisame allpool oleva koodi LinearLayout'i pÀrast Expense Section'i (#2):

<! — TODO #3: Build Bill Section →
 



Sulgege LinearLayout pÀrast TODOde loendit ja lisage uus kood, paigutades selle LinearLayout'i sisse (#3):

Kuna rakenduse peamine ĂŒlesanne on arvutada iga restorani kĂŒlastaja individuaalsed kulud, on costPerPersonTextView'i roll vĂ€ga oluline.

EditText piirab andmete sisestamist ĂŒhe reale, seda parameetrit peab olema NumberDecimal inputType.

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?
KĂ€ivitage projekt testimiseks ja sisestage ĂŒldise kahju parameetrid (katkised tassid, taldrikud jne).

Inimeste ja jootraha sektsiooni vÀljatöötamine

Et lisada jootraha valimist, sisestage allolev kood uude LinearLayout'i sektsiooni (#4):

See koodijupp on vajalik tipprekete tĂ€pseks arvutamiseks. Vaikimisi tekst on 20. ImageButton’id sisaldavad ikoone kirja Ă”iguste kaustas.

Kopeerime jagu tÀielikult ja lisame jÀrgmist (#5):

  • ImageButton'id (subtractPeopleButton, addPeopleButton)
  • TextView'id (numberOfPeopleStaticText, numberOfPeopleTextView)
  • DefaultText numberOfPeopleTextView jaoks (peab olema 4).

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

NĂŒĂŒd, kui rakendus kĂ€ivitub, on vĂ”imalik lisada arve summa, samuti töötavad nupud "Lisa/VĂ”ta vĂ€lja", kuid praegu ei toimu midagi.

Lisame Views

Avame MainActivity.kt ja lisame see funktsiooni initViews (#6):

private fun initViews() {
        expensePerPersonTextView = findViewById(R.id.expensePerPersonTextView)
        billEditText = findViewById(R.id.billEditText)
 
addTipButton = findViewById(R.id.addTipButton)
        tipTextView = findViewById(R.id.tipTextView)
        subtractTipButton = findViewById(R.id.subtractTipButton)
 
addPeopleButton = findViewById(R.id.addPeopleButton)
        numberOfPeopleTextView = findViewById(R.id.numberOfPeopleTextView)
        subtractPeopleButton = findViewById(R.id.subtractPeopleButton)
 
//TODO #8: Siduda nuppe kuulajaga
 
//TODO #16: Siduda EditText TextWatcheriga
 
}

Viimistleme nuppe

Nuppude klikkimise toe lisamiseks rakendame View.OnClickListener klassi tasemel (#7):

class MainActivity: AppCompatActivity(), View.OnClickListener {

Praegu ei Ônnestu projekti kompileerida, vajalik on teha veel mÔned toimingud (#8):

override fun onClick(v: View?) {
        when (v?.id) {
            R.id.addTipButton -> incrementTip()
            R.id.subtractTipButton -> decrementTip()
            R.id.addPeopleButton -> incrementPeople()
            R.id.subtractPeopleButton -> decrementPeople()
        }
    }

Kotlinis on nuppude ja lĂŒlitite haldamine vĂ€ga hea! Lisame alljĂ€rgneva koodi kĂ”ikidesse increment ja decrement funktsioonidesse
(#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()
        }
    }

Siin on kood, mis kaitseb suurenemise funktsioone maksimaalse vÀÀrtusega (MAX_TIP ja MAX_PEOPLE). Lisaks kaitseb kood langetamise funktsioone minimaalsete vÀÀrtustega (MIN_TIP ja MIN_PEOPLE).

Se now we link buttons to listeners in the initViews function (#13):

private fun initViews() {
 
...
 
addTipButton.setOnClickListener(this)
        subtractTipButton.setOnClickListener(this)
 
addPeopleButton.setOnClickListener(this)
        subtractPeopleButton.setOnClickListener(this)
 
//TODO #15: Bind EditText to TextWatcher
}

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

NĂŒĂŒd on vĂ”imalik lisada kogukahju, jootraha ja osalejate arvu. Ja nĂŒĂŒd kĂ”ige tĂ€htsam


Kulude arvestamise osa

See kood arvutab kulud (#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)
 
}

Siin kutsutakse vÀlja funktsioon, mis vÔimaldab arvestada inimeste arvu firmas ja arvutada kÔhtu (#15):

private fun incrementTip() {
 


 
}
 
private fun decrementTip() {
 


 
}
 
private fun incrementPeople() {
 


 
}
 
private fun decrementPeople() {
 


 
}

KÀivitame rakenduse. See nÀeb vÀlja ja töötab suurepÀraselt. Kuid vÔiks olla veelgi parem.

Kui proovite kustutada arve summa ja seejÀrel suurendada nÀpunÀidete vÔi sÔprade arvu, kukub rakendus kokku, kuna kulude nulli vÀÀrtuse kontrolli pole veel olemas. Veelgi enam, kui proovite muuta arve summat, ei uuene kulud.

LÔppfaasid

Lisame TextWatcher'i (#16):

class MainActivity: AppCompatActivity(), View.OnClickListener, TextWatcher {

SeejÀrel sisestame billEditText jaoks kuulaja (#17):

billEditText.addTextChangedListener(this)

Lisame ka koodi TextWatcher'i tÀitmiseks (#18):

override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
        if (!billEditText.text.isEmpty()) {
            calculateExpense()
        }
    }
override fun afterTextChanged(s: Editable?) {}

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

NĂŒĂŒd töötab kĂ”ik ideaalselt! Palju Ă”nne, olete kirjutanud oma «Joogiraha kalkulaatori» Kotlinis.

Kuidas luua nÀpunÀidete kalkulaator Kotlinis: kuidas see töötab?

Skillbox soovitab:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster