Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Bemutatjuk, hogyan készíthetünk egy egyszerű alkalmazást a borravaló kiszámítására Kotlin nyelven. Pontosabban, a Kotlin 1.3.21, Android 4, Android Studio 3. Ez a cikk elsősorban azoknak érdekes, akik az Android-alkalmazásfejlesztés útjára lépnek. Segít megérteni, hogy mi és hogyan működik az alkalmazásban.

Ez a kalkulátor hasznos lesz, amikor ki kell számolni a borravalót egy csapat számára, amely úgy döntött, hogy étteremben vagy kávézóban tölti az időt. Természetesen nem mindenki és nem mindig ad borravalót a pincéreknek, ez inkább nyugati hagyomány, de egy ilyen alkalmazás fejlesztése így is érdekes.

Emlékeztetjük: minden «Habr» olvasónak 10 000 rubeles kedvezmény jár bármely Skillbox kurzus jelentkezésekor a «Habr» promóciós kód felhasználásával.

A Skillbox ajánlja: Gyakorlati kurzus Mobil fejlesztő PRO.

Így néz ki az alkalmazás működés közben:

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Beírja a kívánt százalékot az összegből, a résztvevők számát, és megkapja az eredményt – a borravalót, amit érdemes hagyni.

Kezdünk

Az alkalmazás teljes felülete a következőképpen néz ki:
Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Első lépés – a projekt alapjainak betöltése.Megnyitjuk az Android Studio 3.0 vagy újabb verziójában. Építjük és indítjuk a projektet, és egy fehér képernyőt látunk. Minden rendben, így kell lennie.

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

A felhasználói lépések időrendi sorrendben vannak meghatározva a projektben, hogy minden világos legyen. Ennek megtekintéséhez nyissa meg a Nézet -> Eszközablakok -> TODO menüpontot.

Megvizsgáljuk a projektet és megnyitjuk a colors.xml fájlt a színpaletta értékeléséhez. A strings.xml fájlban találhatók a szöveges adatok (feliratok), a styles.xml fájlban pedig néhány betűtípus sablon.

A költségek részének fejlesztése

Megnyitjuk az activity_main.xml fájlt, és hozzáadjuk az alábbi kódot a LinearLayouthoz (#1):

Most beállíthatja az értékek könyvtárának stílusát, vagy játszhat a színekkel a material.io eszköz segítségével..

Most a projekt így néz ki:

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?
Ahogy látja, a költségek kiszámítása a felhasználó által megadott adatokon alapul.

A számlák részének fejlesztése

Hozzáadjuk az alábbi kódot a LinearLayouthoz az Expense Section után (#2):

<! — TODO #3: Build Bill Section →
 
…

Zárjuk le a LinearLayout-ot a TODO lista után, majd adjuk hozzá az új kódot, elhelyezve azt a LinearLayout-on belül (#3):

Mivel az alkalmazás fő feladata az éttermi költségek egyedi kiszámítása a résztvevők számára, a costPerPersonTextView játssza a legfontosabb szerepet.

Az EditText korlátozza az egy sorba történő adatbevitelt, ennek a paraméternek az inputType értékének NumberDecimal-nak kell lennie.

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?
Indítsuk el a projektet egy teszt céljából, és adjuk meg a teljes kár paramétereit (törött bögrek, tányérok stb.).

A 'Népek és borravalók' rész fejlesztése.

A borravaló mennyiségének kiválasztásához illesszük be az alábbi kódot az új LinearLayout szekcióba (#4):

Ez a kódrészlet szükséges a borravaló pontos összegének kiszámításához. Az alapértelmezett szövegérték 20. Az ImageButtons ikonnal rendelkezik a writable mappában.

Teljesen másoljuk a szakaszt, és adjuk hozzá a következőt (#5):

  • ImageButton azonosítók (subtractPeopleButton, addPeopleButton)
  • TextView azonosítók (numberOfPeopleStaticText, numberOfPeopleTextView)
  • DefaultText a numberOfPeopleTextView-hez (4-nek kell lennie).

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Most, amikor elindítjuk az alkalmazást, van lehetőségünk hozzáadni a számlát, a 'Hozzáad'/'Kivon' gombok működnek, de egyelőre semmi sem történik.

Nézetek hozzáadása.

Nyissuk meg a MainActivity.kt-t, és adjuk hozzá ezt az initViews (#6) funkcióhoz:

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: Bind Buttons to Listener
 
//TODO #16: Bind EditText to TextWatcher
 
}

Készítjük el a gombokat

A gombok kattinthatóságának hozzáadásához bevezetjük a View.OnClickListener-t a osztály szintjén (#7):

class MainActivity: AppCompatActivity(), View.OnClickListener {

A projektet most nem tudjuk fordítani, további lépéseket kell végrehajtani (#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()
        }
    }

A Kotlin gombok és kapcsolók szempontjából nagyon jól van megszervezve! Az alábbi kódot minden increment és decrement funkcióba добавить
(#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()
        }
    }

Ez a kód védi a növelő funkciókat a maximális értékek (MAX_TIP & MAX_PEOPLE) mellett. Ezenkívül a kód védi a csökkentő funkciókat a minimális értékekkel (MIN_TIP & MIN_PEOPLE).

Most összekapcsoljuk a gombokat a figyelőkkel az initViews funkcióban (#13):

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

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Most hozzáadhatjuk a közös költséget, borravalót és a résztvevők számát. És most a legfontosabb…

Költségszámító rész

Ez a kód számítja a költségeket (#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)
 
}

Itt pedig meghívódik a funkció, ami lehetővé teszi a társaság létszámának figyelembevételét és a borravaló kiszámítását (#15):

private fun incrementTip() {
 
…
 
}
 
private fun decrementTip() {
 
…
 
}
 
private fun incrementPeople() {
 
…
 
}
 
private fun decrementPeople() {
 
…
 
}

Elindítjuk az alkalmazást. Jól néz ki, és remekül működik. De lehetne jobb is.

Ha megpróbálja eltávolítani a számlát, majd növelni a borravalók vagy a barátok számát, az alkalmazás összeomlik, mivel még nincs ellenőrzés a nulla költségértékre. Sőt, ha megpróbálja megváltoztatni a számlát, a költségek nem frissülnek.

Végső lépések

Hozzáadjuk a TextWatchert (#16):

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

Ezután beágyazzuk a billEditText felhasználót (#17):

billEditText.addTextChangedListener(this)

Plusz hozzáadjuk a TextWatcher végrehajtásához szükséges kódot (#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) {}

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

Most pedig minden tökéletesen működik! Gratulálunk, írtál egy saját "Borravaló kalkulátort" Kotlin nyelven.

Tippek számológép készítése Kotlin nyelven: hogyan működik ez?

A Skillbox ajánlja:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster