Creu cyfrifiannell awgrymiadau yn Kotlin: sut mae'n gweithio?
Rydyn ni'n dweud wrthych chi sut i greu cymhwysiad syml ar gyfer cyfrifo awgrymiadau yn Kotlin. Yn fwy manwl gywir, Kotlin 1.3.21, Android 4, Android Stiwdio 3. Bydd yr erthygl yn ddiddorol, yn gyntaf oll, ar gyfer y rhai sy'n dechrau ar eu taith yn datblygu cais Android. Mae'n caniatáu ichi ddeall beth a sut mae'n gweithio y tu mewn i'r cais.
Bydd y gyfrifiannell hon yn ddefnyddiol pan fydd angen i chi gyfrifo faint o awgrymiadau gan gwmni sy'n penderfynu treulio amser mewn bwyty neu gaffi. Wrth gwrs, nid yw pawb bob amser yn gadael tip i'r gweinyddwyr; mae hwn yn fwy o draddodiad Gorllewinol, ond mae'r broses o ddatblygu cais o'r fath yn ddiddorol beth bynnag.
Rydym yn atgoffa:i holl ddarllenwyr "Habr" - gostyngiad o 10 rubles wrth gofrestru ar unrhyw gwrs Skillbox gan ddefnyddio'r cod hyrwyddo "Habr".
Rydych chi'n nodi'r ganran a ddymunir o'r cyfanswm, nifer y cyfranogwyr cyfarfod, ac yn cael y canlyniad - faint o awgrym y dylech ei adael.
Dechrau arni
Mae'r rhyngwyneb cais cyflawn yn edrych fel hyn:
Gweithred gyntaf - lawrlwytho sylfaen y prosiect. Agorwch ef yn Android Studio 3.0 neu'n hwyrach. Rydyn ni'n adeiladu ac yn lansio'r prosiect ac yn gweld sgrin wen. Mae popeth yn iawn, felly y dylai fod.
Mae gweithredoedd defnyddwyr yn cael eu hysgrifennu yn y prosiect mewn trefn gronolegol i wneud popeth yn glir. I'w weld, agorwch View -> Tool Windows -> TODO.
Rydym yn astudio'r prosiect ac yn agor lliwiau.xml i werthuso'r palet lliw. Mae strings.xml yn cynnwys data testun (llofnodion), ac mae styles.xml yn cynnwys sawl templed ffont.
Datblygu adran cost
Agorwch activity_main.xml ac ychwanegwch y cod isod i'r Cynllun Llinol (#1):
Mae'r adran hon o'r cod yn angenrheidiol i gyfrifo swm y blaen yn gywir. Y gwerth testun rhagosodedig yw 20. Darperir eiconau i ImageButtons mewn ffolder gyda chaniatâd ysgrifennu.
Copïwch yr adran yn gyfan gwbl ac ychwanegwch y canlynol (#5):
ID ImageButton (tynnuPeopleButton, ychwaneguPeopleButton)
DefaultText ar gyfer numberOfPeopleTextView (rhaid bod yn 4).
Nawr, pan fyddwch chi'n lansio'r cais, mae cyfle i ychwanegu swm yr anfoneb, mae'r botymau “Ychwanegu/Tynnu” hefyd yn gweithio, ond does dim byd yn digwydd eto.
Ychwanegu Golygfeydd
Agorwch MainActivity.kt ac ychwanegwch hwn at swyddogaeth initViews (#6):
O ran botymau a switshis, mae Kotlin yn trefnu popeth yn cŵl iawn! Ychwanegwch y cod isod at yr holl swyddogaethau cynyddran a gostyngiad
(#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()
}
}
Yma mae'r cod yn amddiffyn y swyddogaethau cynyddiad gyda gwerthoedd uchaf (MAX_TIP & MAX_PEOPLE). Yn ogystal, mae'r cod yn amddiffyn y swyddogaethau gostwng gyda gwerthoedd lleiaf (MIN_TIP & MIN_PEOPLE).
Nawr rydym yn cysylltu'r botymau â gwrandawyr yn swyddogaeth initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Gallwch nawr ychwanegu cyfanswm yr iawndal, awgrymiadau, a nifer y cyfranogwyr yn y cyfarfod. Wel, nawr y peth pwysicaf ...
Adran cyfrifo cost
Mae'r cod hwn yn cyfrifo costau (#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)
}
Wel, dyma swyddogaeth a elwir sy'n ei gwneud yn bosibl i gymryd i ystyriaeth nifer y bobl yn y cwmni a chyfrifo awgrymiadau (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Gadewch i ni lansio'r cais. Mae'n edrych ac yn gweithio'n wych. Ond gallai fod yn well.
Os ceisiwch gael gwared ar swm y bil ac yna cynyddu nifer yr awgrymiadau neu ffrindiau, bydd y cais yn chwalu oherwydd nid oes siec eto am y gwerth cost sero. Ar ben hynny, os ceisiwch newid swm y bil, ni fydd y taliadau'n cael eu diweddaru.
Camau terfynol
Ychwanegu TextWatcher (#16):
Dosbarth Prif Weithgaredd: AppCompatActivity(), View.OnClickListener, TextWatcher {
Yna rydym yn mewnosod y gwrandäwr bilEditText (#17):
billEditText.addTextChangedListener(hwn)
Hefyd rydym yn ychwanegu cod i weithredu 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) {}
Wel, nawr mae popeth yn gweithio! Llongyfarchiadau, rydych chi wedi ysgrifennu eich “Tip Calculator” eich hun yn Kotlin.