Ịmepụta ihe mgbako n'ọnụ na Kotlin: kedu ka ọ si arụ ọrụ?
Anyị na-agwa gị otu esi emepụta ngwa dị mfe maka ịgbakọ ndụmọdụ na Kotlin. Kpọmkwem nke ọma, Kotlin 1.3.21, Android 4, Android Studio 3. Isiokwu ahụ ga-adọrọ mmasị, nke mbụ, maka ndị na-amalite njem ha na mmepe ngwa ngwa gam akporo. Ọ na-enye gị ohere ịghọta ihe na otú o si arụ ọrụ n'ime ngwa.
Ihe mgbako a ga-aba uru mgbe ịchọrọ ịgbakọ ọnụ ọgụgụ ndụmọdụ sitere na ụlọ ọrụ na-ekpebi itinye oge na ụlọ oriri na ọṅụṅụ ma ọ bụ cafe. N'ezie, ọ bụghị onye ọ bụla na-ahapụ ndụmọdụ mgbe niile maka ndị na-echere; nke a bụ omenala ndị dị n'Ebe Ọdịda Anyanwụ, ma usoro nke ịmepụta ngwa dị otú ahụ na-adọrọ mmasị n'ọnọdụ ọ bụla.
Anyị na -echetara:maka ndị na-agụ Habr niile - ego 10 ruble mgbe ị na-edebanye aha na nkuzi Skillbox ọ bụla site na iji koodu mgbasa ozi Habr.
Ị na-abanye pasentị chọrọ nke ngụkọta ego, ọnụ ọgụgụ nke ndị sonyere na nzukọ, wee nweta nsonaazụ - ọnụọgụ ego ị ga-ahapụ.
Na-amalite
Ngwa zuru ezu interface dị ka nke a:
Ihe omume mbụ - nbudata ntọala oru ngo. Mepee ya na Android Studio 3.0 ma ọ bụ karịa. Anyị na-ewu ma malite ọrụ ahụ ma hụ ihuenyo ọcha. Ihe niile dị mma, otu ahụ ka ọ kwesịrị ịdị.
Edere omume onye ọrụ n'ime ọrụ ahụ n'usoro oge iji mee ka ihe niile doo anya. Ka ilele ya, mepee View -> Windows ngwaọrụ -> TODO.
Изучаем проект и открываем colors.xml для оценки цветовой палитры. В strings.xml размещены текстовые данные (подписи), а в styles.xml есть несколько шрифтовых шаблонов.
Mmepe ngalaba ọnụ ahịa
Mepee activity_main.xml ma tinye koodu dị n'okpuru na LinearLayout (#1):
Nkebi nke koodu a dị mkpa iji gbakọọ ọnụọgụ ọnụ n'ụzọ ziri ezi. Uru ederede ndabara bụ 20. A na-enye ImageButton akara ngosi na nchekwa nwere ikike ide.
Detuo ngalaba ahụ kpamkpam wee tinye ihe ndị a (#5):
N'ihe banyere bọtịnụ na mgba ọkụ, Kotlin na-ahazi ihe niile dị mma! Tinye koodu dị n'okpuru maka ọrụ mmụba na mbelata
(#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()
}
}
N'ebe a, koodu ahụ na-eji ụkpụrụ kachasị (MAX_TIP & MAX_PEOPLE) kpuchido ọrụ ịrị elu. Na mgbakwunye, koodu ahụ na-eji ụkpụrụ kacha nta na-echekwa ọrụ mbelata (MIN_TIP & MIN_PEOPLE).
Ugbu a, anyị na-ejikọta bọtịnụ na ndị na-ege ntị na ọrụ initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Ị nwere ike tinye ugbu a mkpokọta mmebi, ndụmọdụ na ọnụ ọgụgụ ndị sonyere na nzukọ. Ọfọn, ugbu a ihe kacha mkpa ...
Ngalaba ngụkọta ego
Koodu a na-agbakọ ọnụ ahịa (#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)
}
Ọfọn, ebe a na-akpọ ọrụ nke na-eme ka o kwe omume iburu n'uche ọnụ ọgụgụ ndị mmadụ na ụlọ ọrụ ma gbakọọ ndụmọdụ (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Ka anyị malite ngwa ahụ. Ọ na-ele anya ma na-arụ ọrụ nke ọma. Ma ọ nwere ike ịka mma.
Ọ bụrụ na ị nwaa iwepu ego ụgwọ ahụ wee mụbaa ọnụ ọgụgụ ndụmọdụ ma ọ bụ ndị enyi, ngwa ahụ ga-adaba n'ihi na enwebeghị ego nlele maka uru efu efu. Ọzọkwa, ọ bụrụ na ị na-agbalị ịgbanwe ego ụgwọ, ụgwọ agaghị emelite.