Ag tógáil áireamhán leid i Kotlin: conas a oibríonn sé?
Inseoimid duit conas iarratas simplí a chruthú chun leideanna a ríomh i Kotlin. Níos cruinne, Kotlin 1.3.21, Android 4, Android Studio 3. Beidh an t-alt suimiúil, ar an gcéad dul síos, dóibh siúd atá ag tosú ar a dturas i bhforbairt feidhmchlár Android. Ligeann sé duit a thuiscint cad agus conas a oibríonn sé taobh istigh den fheidhmchlár.
Beidh an t-áireamhán seo áisiúil nuair is gá duit méid na leideanna a ríomh ó chuideachta a chinneann am a chaitheamh i mbialann nó i gcaifé. Ar ndóigh, ní fhágann gach duine tip do na freastalaithe i gcónaí;
Meabhraímid:do léitheoirí uile "Habr" - lascaine de 10 rúbal nuair a chláraíonn siad in aon chúrsa Scilbox ag baint úsáide as an gcód bolscaireachta "Habr".
Cuireann tú isteach an céatadán atá ag teastáil den mhéid iomlán, ar líon na rannpháirtithe cruinnithe, agus a fháil ar an toradh - an méid tip ba chóir duit a fhágáil.
Ag tosú
Breathnaíonn an comhéadan feidhmchláir iomlán mar seo:
An chéad ghníomh - Íoslódáil an bonn tionscadal. Oscail é in Android Studio 3.0 nó níos déanaí. Déanaimid an tionscadal a thógáil agus a sheoladh agus feicimid scáileán bán. Tá gach rud go breá, sin mar ba chóir dó a bheith.
Scríobhtar gníomhartha úsáideora sa tionscadal in ord croineolaíoch chun gach rud a dhéanamh soiléir. Chun é a fheiceáil, oscail Amharc -> Uirlis Windows -> TODO.
Déanaimid staidéar ar an tionscadal agus osclaíonn muid dathanna.xml chun an pailéad dathanna a mheas. Tá sonraí téacs (sínithe) ag strings.xml, agus tá roinnt teimpléid cló ann i styles.xml.
Forbairt na rannóige costais
Oscail gníomhaíocht_main.xml agus cuir an cód thíos leis an Leagan Amach Líneach (#1):
Tá an chuid seo den chód riachtanach chun méid an leid a ríomh go cruinn. Is é 20 an luach réamhshocraithe téacs. Cuirtear deilbhíní ar fáil do ImageButtons i bhfillteán a bhfuil ceadanna scríofa aige.
Cóipeáil an chuid go hiomlán agus cuir an méid seo a leanas leis (#5):
DefaultText le haghaidh numberOfPeopleTextView (ní mór 4 a bheith ann).
Anois, nuair a sheolann tú an feidhmchlár, tá deis ann méid an tsonraisc a chur leis, oibríonn na cnaipí “Add/Dealaigh” freisin, ach ní tharlaíonn aon rud go fóill.
Amhairc a Chur Leis
Oscail MainActivity.kt agus cuir é seo leis an bhfeidhm initViews (#6):
Maidir le cnaipí agus lasca, eagraíonn Kotlin gach rud an-fionnuar! Cuir an cód thíos le gach feidhm incriminte agus laghdaithe
(#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()
}
}
Anseo cosnaíonn an cód na feidhmeanna incriminte le huasluachanna (MAX_TIP & MAX_PEOPLE). Ina theannta sin, cosnaíonn an cód na feidhmeanna decrement le luachanna íosta (MIN_TIP & MIN_PEOPLE).
Anois nascaimid na cnaipí le héisteoirí san fheidhm initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Is féidir leat damáistí iomlána, leideanna, agus líon rannpháirtithe an chruinnithe a chur leis anois. Bhuel, anois an rud is tábhachtaí ...
Rannóg ríomh costas
Ríomhann an cód seo costais (#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)
}
Bhuel, tugtar feidhm anseo a fhágann gur féidir líon na ndaoine sa chuideachta a chur san áireamh agus leideanna a ríomh (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Seolfaimid an t-iarratas. Breathnaíonn sé agus oibríonn sé go hiontach. Ach d'fhéadfadh sé a bheith níos fearr.
Má dhéanann tú iarracht méid an bhille a bhaint agus ansin líon na leideanna nó na gcairde a mhéadú, beidh an t-iarratas tuairteála toisc nach bhfuil aon seiceáil fós ar an luach costais nialasach. Thairis sin, má dhéanann tú iarracht méid an bhille a athrú, ní dhéanfar na táillí a nuashonrú.