Ṣiṣẹda iṣiro imọran ni Kotlin: bawo ni o ṣe n ṣiṣẹ?
A sọ fun ọ bi o ṣe le ṣẹda ohun elo ti o rọrun fun iṣiro awọn imọran ni Kotlin. Ni deede diẹ sii, Kotlin 1.3.21, Android 4, Android Studio 3. Nkan naa yoo jẹ iyanilenu, akọkọ, fun awọn ti o bẹrẹ irin-ajo wọn ni idagbasoke ohun elo Android. O faye gba o lati ni oye ohun ti ati bi o ti ṣiṣẹ inu awọn ohun elo.
Ẹrọ iṣiro yii yoo wa ni ọwọ nigbati o nilo lati ṣe iṣiro iye awọn imọran lati ọdọ ile-iṣẹ ti o pinnu lati lo akoko ni ile ounjẹ tabi kafe kan. Nitoribẹẹ, kii ṣe gbogbo eniyan nigbagbogbo fi aaye kan silẹ si awọn oluduro; eyi jẹ diẹ sii ti aṣa Oorun, ṣugbọn ilana ti idagbasoke iru ohun elo jẹ iwunilori ni eyikeyi ọran.
A leti:fun gbogbo awọn oluka ti "Habr" - ẹdinwo ti 10 rubles nigbati o forukọsilẹ ni eyikeyi iṣẹ-ẹkọ Skillbox nipa lilo koodu ipolowo “Habr”.
O tẹ ipin ogorun ti o fẹ ti iye lapapọ, nọmba awọn olukopa ipade, ati gba abajade - iye ti imọran ti o yẹ ki o lọ kuro.
Berè
Ni wiwo ohun elo pipe dabi eyi:
Igbese akọkọ - gbigba lati ayelujara ipilẹ ise agbese. Ṣi i ni Android Studio 3.0 tabi nigbamii. A kọ ati ṣe ifilọlẹ iṣẹ naa ati rii iboju funfun kan. Ohun gbogbo dara, iyẹn ni o yẹ ki o jẹ.
Awọn iṣe olumulo ni a kọ sinu iṣẹ akanṣe ni ilana akoko lati jẹ ki ohun gbogbo han. Lati wo, ṣii Wo -> Ọpa Windows -> TODO.
A ṣe iwadi iṣẹ akanṣe ati ṣiṣi awọn awọ.xml lati ṣe iṣiro paleti awọ. strings.xml ni data ọrọ ninu (awọn ibuwọlu), ati styles.xml ni ọpọlọpọ awọn awoṣe fonti ninu.
Idagbasoke apakan iye owo
Ṣii iṣẹ_main.xml ki o ṣafikun koodu ni isalẹ si LinearLayout (#1):
Niwọn igba ti iṣẹ akọkọ ti ohun elo ni lati ṣe iṣiro awọn idiyele ẹni kọọkan fun alabaṣe kọọkan ninu apejọ ounjẹ kan, iye owoPersonTextView ṣe ipa akọkọ.
ṢatunkọText ṣe opin igbewọle si laini kan, paramita yii gbọdọ wa ni ṣeto si NumberDecimal inputType.
A ṣe ifilọlẹ iṣẹ akanṣe fun idanwo ati tẹ awọn ayeraye fun ibajẹ gbogbogbo (awọn agolo fifọ, awọn awo, ati bẹbẹ lọ)
Idagbasoke ti apakan "Awọn eniyan ati Awọn imọran".
Lati ṣafikun yiyan iwọn didun imọran, lẹẹmọ koodu ni isalẹ sinu apakan LinearLayout tuntun (#4):
Yi apakan ti koodu jẹ pataki lati ṣe iṣiro deede iye sample. Iwọn ọrọ aiyipada jẹ 20. Awọn bọtini Aworan ti pese pẹlu awọn aami ninu folda pẹlu awọn igbanilaaye kikọ.
Daakọ apakan naa patapata ki o ṣafikun atẹle naa (#5):
Ọrọ aiyipada fun nọmbaOfPeopleTextView (gbọdọ jẹ 4).
Bayi, nigba ti o ba ṣe ifilọlẹ ohun elo naa, aye wa lati ṣafikun iye risiti, awọn bọtini “Fikun-un / Iyokuro” tun ṣiṣẹ, ṣugbọn ko si ohun ti o ṣẹlẹ sibẹsibẹ.
Fifi Awọn iwo
Ṣi MainActivity.kt ki o ṣafikun eyi si iṣẹ initViews (#6):
Ni awọn ofin ti awọn bọtini ati awọn yipada, Kotlin ṣeto ohun gbogbo dara pupọ! Ṣafikun koodu ti o wa ni isalẹ si gbogbo awọn iṣẹ afikun ati idinku
(#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()
}
}
Nibi koodu ṣe aabo awọn iṣẹ afikun pẹlu awọn iye ti o pọju (MAX_TIP & MAX_PEOPLE). Ni afikun, koodu ṣe aabo awọn iṣẹ idinku pẹlu awọn iye to kere julọ (MIN_TIP & MIN_PEOPLE).
Bayi a ṣepọ awọn bọtini pẹlu awọn olutẹtisi ni iṣẹ initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
O le ṣafikun awọn bibajẹ lapapọ, awọn imọran, ati nọmba awọn olukopa ipade. O dara, bayi ohun pataki julọ ...
Abala iṣiro iye owo
Koodu yii ṣe iṣiro awọn idiyele (#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)
}
O dara, nibi ni a pe iṣẹ kan ti o jẹ ki o ṣee ṣe lati ṣe akiyesi nọmba awọn eniyan ni ile-iṣẹ ati ṣe iṣiro awọn imọran (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Jẹ ká lọlẹ awọn ohun elo. O wulẹ ati ki o ṣiṣẹ nla. Ṣugbọn o le dara julọ.
Ti o ba gbiyanju lati yọ iye owo naa kuro lẹhinna mu nọmba awọn imọran tabi awọn ọrẹ pọ si, ohun elo naa yoo kọlu nitori ko si ayẹwo sibẹsibẹ fun iye idiyele odo. Pẹlupẹlu, ti o ba gbiyanju lati yi iye owo naa pada, awọn idiyele naa kii yoo ni imudojuiwọn.