Að búa til þjórféreiknivél í Kotlin: hvernig virkar það?
Við segjum þér hvernig á að búa til einfalt forrit til að reikna ráð í Kotlin. Nánar tiltekið, Kotlin 1.3.21, Android 4, Android Studio 3. Greinin verður fyrst og fremst áhugaverð fyrir þá sem eru að hefja ferð sína í þróun Android forrita. Það gerir þér kleift að skilja hvað og hvernig það virkar inni í forritinu.
Þessi reiknivél kemur sér vel þegar þú þarft að reikna út magn ábendinga frá fyrirtæki sem ákveður að eyða tíma á veitingastað eða kaffihúsi. Auðvitað skilja ekki allir alltaf eftir þjórfé til þjónanna, þetta er frekar vestræn hefð, en ferlið við að þróa slíkt forrit er áhugavert í öllum tilvikum.
Við minnum á:fyrir alla Habr lesendur - 10 rúblur afsláttur þegar þú skráir þig á hvaða Skillbox námskeið sem er með því að nota Habr kynningarkóðann.
Þú slærð inn æskilega prósentu af heildarupphæðinni, fjölda fundarþátttakenda og færð niðurstöðuna - magn þjórfé sem þú ættir að skilja eftir.
Hafist handa
Allt forritsviðmótið lítur svona út:
Fyrsta aðgerð - að hlaða niður verkefnagrunninum. Opnaðu það í Android Studio 3.0 eða nýrri. Við smíðum og ræsum verkefnið og sjáum hvítan skjá. Allt er í lagi, þannig á það að vera.
Notendaaðgerðir eru skrifaðar í verkefnið í tímaröð til að gera allt skýrt. Til að skoða það skaltu opna View -> Tool Windows -> TODO.
Við skoðum verkefnið og opnum colors.xml til að meta litaspjaldið. strings.xml inniheldur textagögn (undirskriftir) og styles.xml inniheldur nokkur letursniðmát.
Þróun kostnaðarhluta
Opnaðu activity_main.xml og bættu kóðanum hér að neðan við LinearLayout (#1):
Þar sem aðalverkefni forritsins er að reikna út einstaklingskostnað fyrir hvern þátttakanda í veitingasamkomu, gegnir costPerPersonTextView aðalhlutverkinu.
EditText takmarkar inntakið við eina línu, þessi færibreyta verður að vera stillt á NumberDecimal inputType.
Við ræsum verkefnið fyrir prófið og sláum inn færibreytur fyrir almennar skemmdir (brotnir bollar, diskar osfrv.)
Þróun hlutans „Fólk og ráð“
Til að bæta við vali á þjórfé skaltu líma kóðann hér að neðan í nýja LinearLayout hlutann (#4):
Þessi hluti kóða er nauðsynlegur til að reikna nákvæmlega út magn þjórfé. Sjálfgefið textagildi er 20. ImageButtons eru með táknum í möppu með skrifheimildir.
Afritaðu hlutann alveg og bættu við eftirfarandi (#5):
ImageButton auðkenni (draga frá PeopleButton, addPeopleButton)
Hvað varðar hnappa og rofa, þá skipuleggur Kotlin allt mjög flott! Bættu kóðanum hér að neðan við allar aukningar- og lækkunaraðgerðir
(#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()
}
}
Hér verndar kóðinn aukningaraðgerðirnar með hámarksgildum (MAX_TIP & MAX_PEOPLE). Að auki verndar kóðinn lækkunaraðgerðirnar með lágmarksgildum (MIN_TIP & MIN_PEOPLE).
Nú tengjum við hnappana við hlustendur í initViews aðgerðinni (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Þú getur nú bætt við heildartjóni, ábendingum og fjölda fundarmanna. Jæja, nú er það mikilvægasta...
Kostnaðarútreikningur hluti
Þessi kóði reiknar út kostnað (#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)
}
Jæja, hér er kölluð fall sem gerir það mögulegt að taka tillit til fjölda fólks í fyrirtækinu og reikna út ábendingar (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Við skulum ræsa forritið. Það lítur út og virkar frábærlega. En það gæti verið betra.
Ef þú reynir að fjarlægja reikningsupphæðina og fjölgar síðan ábendingum eða vinum, mun forritið hrynja vegna þess að það er ekkert athugað ennþá fyrir núllkostnaðargildið. Þar að auki, ef þú reynir að breyta reikningsupphæðinni, verða gjöldin ekki uppfærð.
Lokaskref
Bæta við TextWatcher (#16):
class MainActivity: AppCompatActivity(), View.OnClickListener, TextWatcher {
Síðan fellum við inn billEditText hlustandann (#17):
billEditText.addTextChangedListener(þetta)
Auk þess bætum við kóða til að keyra TextWatcher (#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) {}
Jæja, nú virkar algjörlega allt! Til hamingju, þú hefur skrifað þinn eigin „Ábendingareiknivél“ í Kotlin.