Bini ta' kalkolatur tal-ponta f'Kotlin: kif jaħdem?
Aħna ngħidulek kif toħloq applikazzjoni sempliċi għall-kalkolu tal-pariri f'Kotlin. B'mod aktar preċiż, Kotlin 1.3.21, Android 4, Android Studio 3. L-artikolu se jkun interessanti, l-ewwelnett, għal dawk li qed jibdew il-vjaġġ tagħhom fl-iżvilupp tal-applikazzjoni Android. Jippermettilek tifhem x'u kif taħdem ġewwa l-applikazzjoni.
Dan il-kalkolatur se jkun utli meta jkollok bżonn tikkalkula l-ammont ta 'pariri minn kumpanija li tiddeċiedi li tqatta' ħin f'ristorant jew kafetterija. Naturalment, mhux kulħadd dejjem iħalli ponta lill-wejters din hija aktar tradizzjoni tal-Punent, iżda l-proċess tal-iżvilupp ta 'applikazzjoni bħal din huwa interessanti fi kwalunkwe każ.
Infakkrukom:għall-qarrejja kollha ta '"Habr" - skont ta' 10 rublu meta tirreġistra fi kwalunkwe kors ta 'Skillbox billi tuża l-kodiċi promozzjonali "Habr".
Dan huwa kif tidher l-applikazzjoni waqt it-tħaddim:
Int iddaħħal il-perċentwal mixtieq tal-ammont totali, in-numru ta 'parteċipanti tal-laqgħa, u tikseb ir-riżultat - l-ammont ta' ponta li għandek tħalli.
Kif tibda
L-interface sħiħa tal-applikazzjoni tidher bħal din:
L-ewwel azzjoni - tniżżil tal-bażi tal-proġett. Iftaħ f'Android Studio 3.0 jew aktar tard. Nibnu u nniedu l-proġett u naraw skrin abjad. Kollox tajjeb, hekk għandu jkun.
L-azzjonijiet tal-utent huma miktuba fil-proġett f'ordni kronoloġika biex jagħmlu kollox ċar. Biex tarah, iftaħ View -> Tool Windows -> TODO.
Aħna nistudjaw il-proġett u niftħu colors.xml biex nevalwaw il-paletta tal-kulur. strings.xml fih data tat-test (firem), u styles.xml fih diversi mudelli ta' font.
Żvilupp tat-taqsima tal-ispiża
Iftaħ activity_main.xml u żid il-kodiċi hawn taħt mal-LinearLayout (#1):
Peress li l-kompitu ewlieni tal-applikazzjoni huwa li tikkalkula l-ispejjeż individwali għal kull parteċipant f'laqgħa ta 'ristorant, costPersonTextView għandu r-rwol ewlieni.
EditText jillimita l-input għal linja waħda, dan il-parametru għandu jkun issettjat għal NumberDecimal inputType.
Inniedu l-proġett għat-test u ndaħħlu l-parametri għall-ħsara ġenerali (kikkri miksura, platti, eċċ.)
Żvilupp tat-taqsima “Nies u Tips”.
Biex iżżid għażla tal-volum tal-ponta, waħħal il-kodiċi hawn taħt fis-sezzjoni LinearLayout il-ġdida (#4):
Din it-taqsima tal-kodiċi hija meħtieġa biex tikkalkula b'mod preċiż l-ammont tal-ponta. Il-valur tat-test default huwa 20. ImageButtons huma pprovduti b'ikoni f'folder b'permessi ta 'kitba.
Ikkopja s-sezzjoni kompletament u żid dan li ġej (#5):
F'termini ta 'buttuni u swiċċijiet, Kotlin jorganizza kollox jibred ħafna! Żid il-kodiċi hawn taħt għall-funzjonijiet kollha ta 'inkrement u tnaqqis
(#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()
}
}
Hawnhekk il-kodiċi jipproteġi l-funzjonijiet ta 'inkrement b'valuri massimi (MAX_TIP & MAX_PEOPLE). Barra minn hekk, il-kodiċi jipproteġi l-funzjonijiet ta’ tnaqqis b’valuri minimi (MIN_TIP & MIN_PEOPLE).
Issa aħna nassoċjaw il-buttuni mas-semmiegħa fil-funzjoni initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Issa tista 'żżid danni totali, tips, u n-numru ta' parteċipanti tal-laqgħa. Ukoll, issa l-iktar ħaġa importanti...
Taqsima tal-kalkolu tal-ispiża
Dan il-kodiċi jikkalkula l-ispejjeż (#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)
}
Ukoll, hawnhekk tissejjaħ funzjoni li tagħmilha possibbli li jittieħed kont tan-numru ta 'nies fil-kumpanija u tikkalkula pariri (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Ejja nniedu l-applikazzjoni. Jidher u jaħdem tajjeb. Iżda jista 'jkun aħjar.
Jekk tipprova tneħħi l-ammont tal-kont u mbagħad iżżid in-numru ta’ tips jew ħbieb, l-applikazzjoni tiġġarraf għax għad m’hemm l-ebda kontroll għall-valur ta’ spiża żero. Barra minn hekk, jekk tipprova tibdel l-ammont tal-kont, it-tariffi ma jiġux aġġornati.
Passi finali
Żid TextWatcher (#16):
klassi MainActivity: AppCompatActivity (), View.OnClickListener, TextWatcher {
Imbagħad inkorporaw is-semmiegħ billEditText (#17):
billEditText.addTextChangedListener(dan)
Barra minn hekk inżidu kodiċi biex tesegwixxi 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) {}
Ukoll, issa assolutament kollox jaħdem! Prosit, inti ktibt il-"Kalkolatur tat-Tip" tiegħek f'Kotlin.