Bati yon kalkilatris tip nan Kotlin: ki jan li fonksyone?
Nou di w ki jan yo kreye yon aplikasyon senp pou kalkile konsèy nan Kotlin. Plis jisteman, Kotlin 1.3.21, Android 4, Android Studio 3. Atik la pral enteresan, premye a tout moun, pou moun ki ap kòmanse vwayaj yo nan devlopman aplikasyon android. Li pèmèt ou konprann ki sa ak ki jan li fonksyone andedan aplikasyon an.
Kalkilatris sa a ap vin an sou la men lè ou bezwen kalkile kantite konsèy nan men yon konpayi ki deside pase tan nan yon restoran oswa kafe. Natirèlman, se pa tout moun ki toujou kite yon ti konsèy bay sèvant yo sa a se plis nan yon tradisyon Lwès, men pwosesis la nan devlope yon aplikasyon enteresan nan nenpòt ka.
Nou raple:pou tout lektè "Habr" - yon rabè nan 10 rubles lè w ap enskri nan nenpòt kou Skillbox lè l sèvi avèk kòd pwomosyon "Habr".
Ou antre nan pousantaj ou vle a nan kantite lajan total la, kantite patisipan reyinyon an, epi jwenn rezilta a - kantite lajan an nan konsèy ou ta dwe kite.
Pou kòmanse
Koòdone aplikasyon konplè a sanble sa a:
Premye aksyon - telechaje baz pwojè a. Louvri li nan Android Studio 3.0 oswa pita. Nou bati ak lanse pwojè a ak wè yon ekran blan. Tout bagay anfòm, se konsa li ta dwe ye.
Aksyon itilizatè yo ekri nan pwojè a nan lòd kwonolojik pou fè tout bagay klè. Pou wè li, louvri View -> Zouti Windows -> TODO.
Nou etidye pwojè a epi louvri colors.xml pou evalye palèt koulè a. strings.xml gen done tèks (siyati), ak styles.xml gen plizyè modèl font.
Devlopman seksyon pri
Louvri activity_main.xml epi ajoute kòd ki anba a nan LinearLayout (#1):
Depi travay prensipal aplikasyon an se kalkile depans endividyèl pou chak patisipan nan yon rasanbleman restoran, costPersonTextView jwe wòl prensipal la.
EditText limite opinyon an nan yon liy, paramèt sa a dwe mete sou NumberDecimal inputType.
Nou lanse pwojè a pou tès la epi antre nan paramèt yo pou domaj jeneral (tas kase, plak, elatriye)
Devlopman seksyon "Moun ak Konsèy".
Pou ajoute yon seleksyon volim tip, kole kòd ki anba a nan nouvo seksyon LinearLayout (#4):
Koulye a, lè ou lanse aplikasyon an, gen yon opòtinite yo ajoute kantite lajan an fakti, bouton "Ajoute / Soustraksyon" yo travay tou, men pa gen anyen k ap pase ankò.
Ajoute View
Louvri MainActivity.kt epi ajoute sa a nan fonksyon initViews (#6):
An tèm de bouton ak switch, Kotlin òganize tout bagay trè fre! Ajoute kòd ki anba a nan tout fonksyon enkreman ak diminye
(#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()
}
}
Isit la kòd la pwoteje fonksyon enkreman yo ak valè maksimòm (MAX_TIP & MAX_PEOPLE). Anplis de sa, kòd la pwoteje fonksyon diminye ak valè minimòm (MIN_TIP & MIN_PEOPLE).
Koulye a, nou asosye bouton yo ak koute nan fonksyon initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Ou kapab kounye a ajoute total domaj, konsèy, ak kantite patisipan reyinyon yo. Oke, kounye a bagay ki pi enpòtan ...
Seksyon kalkil pri
Kòd sa a kalkile depans (#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)
}
Oke, isit la yo rele yon fonksyon ki fè li posib yo pran an kont kantite moun ki nan konpayi an ak kalkile konsèy (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Ann lanse aplikasyon an. Li sanble ak travay gwo. Men, li ta ka pi bon.
Si w eseye retire kantite lajan an epi ogmante kantite konsèy oswa zanmi, aplikasyon an ap fè aksidan paske pa gen okenn chèk ankò pou valè pri zewo a. Anplis, si w eseye chanje kantite bòdwo a, chaj yo p ap mete ajou.