Kotlin-en aholku kalkulagailua eraikitzea: nola funtzionatzen du?
Kotlin-en aholkuak kalkulatzeko aplikazio sinple bat nola sortu erakusten dizugu. Zehatzago esateko, Kotlin 1.3.21, Android 4, Android Studio 3. Artikulua interesgarria izango da, lehenik eta behin, Android aplikazioak garatzen hasten direnentzat. Aplikazioaren barruan zer eta nola funtzionatzen duen ulertzeko aukera ematen du.
Horrelako kalkulagailu bat erabilgarria da jatetxe edo kafetegi batean denbora pasatzea erabakitzen duen enpresa baten aholku kopurua kalkulatu behar duzunean. Jakina, denek ez dute tea uzten zerbitzarientzat, hau mendebaldeko tradizio bat gehiago da, baina aplikazio hori garatzeko prozesua interesgarria da edozein kasutan.
Gogoratzen dugu:"Habr" irakurle guztientzat - 10 errubloko deskontua "Habr" promozio-kodea erabiliz Skillbox-eko edozein ikastarotan izena ematean.
Hona hemen aplikazioak martxan dagoenean nolakoa den:
Zenbateko osoaren nahi den ehunekoa, bilerako parte-hartzaile kopurua sartu eta emaitza lortuko duzu - utzi beharreko aholku kopurua.
Lehen urratsak
Aplikazioaren interfaze osoa honelakoa da:
Lehen ekintza - proiektuaren oinarria deskargatzea. Ireki Android Studio 3.0 edo berriagoa den bertsioan. Proiektua eraiki eta exekutatzen dugu eta pantaila zuri bat ikusten dugu. Dena ondo dago, behar den bezala.
Erabiltzaileen ekintzak proiektuan ordena kronologikoan idazten dira, dena argi egon dadin. Ikusteko, ireki Ikusi -> Tresnaren leihoak -> EGIN BEHAR.
Proiektua aztertzen dugu eta kolore-paleta ebaluatzeko colors.xml irekitzen dugu. strings.xml-k testu-datuak (oinak) ditu eta styles.xml-k hainbat letra-tipo txantiloi ditu.
Kostuen Atala Garapena
Ireki activity_main.xml eta gehitu beheko kodea LinearLayout-era (#1):
Aplikazioaren zeregin nagusia jatetxeko topaketetako parte-hartzaile bakoitzaren kostu indibidualak kalkulatzea denez, kostuPertsonaTextView-ek betetzen du zeregin nagusia.
EditText-ek sarrera lerro batera mugatzen du, parametro hau NumberDecimal inputType gisa ezarri behar da.
Proba egiteko proiektua hasten dugu eta kalte osoaren parametroak sartzen ditugu (hautsitako edalontzi, platerak, etab.)
"Pertsonak eta aholkuak" atalaren garapena
Aholku kopuruaren hautatzailea gehitzeko, itsatsi beheko kodea LinearLayout atal berri batean (#4):
Kode zati hau behar da propina zenbatekoa zehaztasunez kalkulatzeko. Testu-balio lehenetsia 20 da. ImageButtons ikonoekin hornitzen dira idazketa-baimenak dituen karpeta batean.
NumberOfPeopleTextView-ren DefaultText (4 izan behar du).
Orain, aplikazioa abiaraztean, fakturaren zenbatekoa gehitzeko aukera dago, Gehitu / Kendu botoiek ere funtzionatzen dute, baina orain arte ez da ezer gertatzen.
Gehitu Ikuspegiak
Ireki MainActivity.kt eta gehitu hau initViews funtziora (#6):
Botoi eta etengailuei dagokienez, Kotlinek dena oso polita du antolatuta! Gehitu beheko kodea gehitzeko eta gutxitzeko funtzio guztietan
(#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()
}
}
Hemen kodeak gehikuntza-funtzioak babesten ditu gehienezko balioekin (MAX_TIP eta MAX_PEOPLE). Gainera, kodeak gutxieneko balioekin (MIN_TIP & MIN_PEOPLE) funtzioak babesten ditu.
Orain botoiak entzuleei lotuko dizkiegu initViews funtzioan (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Kalte osoa, aholkuak eta bilerako parte-hartzaile kopurua gehi ditzakezu orain. Beno, orain garrantzitsuena...
Kostuen atala
Kode honek kostuak kalkulatzen ditu (#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)
}
Bada, hemen konpainiako pertsona kopurua kontuan hartu eta propina kalkulatzeko aukera ematen duen funtzio bat deitzen da (#15):
private fun incrementTip() {
β¦
}
private fun decrementTip() {
β¦
}
private fun incrementPeople() {
β¦
}
private fun decrementPeople() {
β¦
}
Aplikazioa martxan jartzen dugu. Itxura handia du eta funtzionatzen du. Baina hobea izan liteke.
Fakturaren zenbatekoa kentzen saiatzen bazara eta gero aholku edo lagunen kopurua handitzen baduzu, aplikazioa huts egingo da, oraindik ez dagoelako zero kostuen egiaztapenik. Gainera, fakturaren zenbatekoa aldatzen saiatzen bazara, kostuak ez dira eguneratuko.
Azken urratsak
Gehitu TextWatcher (#16):
klase MainActivity: AppCompatActivity(), View.OnClickListener, TextWatcher {
Ondoren, billEditText entzulea txertatu dugu (#17):
billEditText.addTextChangedListener(hau)
Gainera, gehitu kodea TextWatcher exekutatzeko (#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) {}
Beno, orain dena funtzionatzen du! Zorionak, zure "Tipping Calculator" idatzi duzu Kotlin-en.