Manangana kajy fika ao amin'ny Kotlin: ahoana no fiasan'izy io?
Lazainay aminao ny fomba hamoronana fampiharana tsotra amin'ny kajy toro-hevitra ao amin'ny Kotlin. Ny marimarina kokoa, Kotlin 1.3.21, Android 4, Android Studio 3. Ny lahatsoratra dia hahaliana, voalohany indrindra, ho an'ireo izay manomboka ny diany amin'ny fampandrosoana ny fampiharana Android. Mamela anao hahatakatra ny zavatra sy ny fomba fiasa ao anatin'ny fampiharana izany.
Ity kajy ity dia ho azo ampiasaina rehefa mila manao kajy ny habetsaky ny toro-hevitra avy amin'ny orinasa iray izay manapa-kevitra ny handany fotoana ao amin'ny trano fisakafoanana na kafe. Mazava ho azy fa tsy ny olon-drehetra no mamela tetika ho an'ny mpandroso sakafo; ity dia fomban-drazana tandrefana kokoa, fa ny dingana amin'ny famolavolana fampiharana toy izany dia mahaliana na inona na inona.
Ampidiro ny isan-jato irina amin'ny totalin'ny vola, ny isan'ny mpandray anjara amin'ny fivoriana, ary mahazo ny vokatra - ny habetsaky ny tendrony tokony hialanao.
Manomboka
Ny interface interface manontolo dia toy izao:
Hetsika voalohany - misintona ny fototry ny tetikasa. Sokafy amin'ny Android Studio 3.0 na aoriana. Manorina sy manomboka ny tetikasa izahay ary mahita efijery fotsy. Tsara ny zava-drehetra, izay no tokony ho izy.
Ny hetsika ataon'ny mpampiasa dia voasoratra ao amin'ny tetikasa araka ny filaharan'ny fotoana mba hampazava ny zava-drehetra. Raha te hijery azy dia sokafy ny View -> Tool Windows -> TODO.
Mandalina ny tetikasa izahay ary misokatra ny color.xml mba hanombanana ny palette loko. strings.xml dia misy angona lahatsoratra (sonia), ary styles.xml dia misy endritsoratra maromaro.
Fampandrosoana fizarana vola
Sokafy ny activity_main.xml ary ampio ny kaody etsy ambany amin'ny LinearLayout (#1):
Satria ny asa lehibe amin'ny fampiharana dia ny manisa ny sandan'ny tsirairay ho an'ny mpandray anjara tsirairay amin'ny fivorian'ny trano fisakafoanana, costPerPersonTextView no mitana ny anjara toerana lehibe.
EditText dia mametra ny fidirana amin'ny andalana iray, ity parameter ity dia tsy maintsy apetraka amin'ny NumberDecimal inputType.
Manomboka ny tetikasa ho an'ny fitsapana izahay ary ampidiro ny mari-pamantarana ho an'ny fahasimbana ankapobeny (kaopy tapaka, vilia, sns.)
Fampandrosoana ny fizarana "Olona sy toro-hevitra".
Raha te-hanampy fifantenana voky, apetaho ao amin'ny fizarana LinearLayout vaovao ny kaody etsy ambany (#4):
Ity fizarana amin'ny kaody ity dia ilaina mba hanombanana tsara ny habetsaky ny tendrony. Ny sandan'ny lahatsoratra default dia 20. Ny ImageButtons dia omena miaraka amin'ny kisary ao anaty lahatahiry misy alalana manoratra.
DefaultText ho an'ny numberOfPeopleTextView (tsy maintsy 4).
Amin'izao fotoana izao, rehefa manomboka ny fampiharana ianao, dia misy ny fahafahana manampy ny sandan'ny faktiora, ny bokotra "Add/Subtract" dia miasa ihany koa, saingy mbola tsy misy izany.
Manampy Views
Sokafy ny MainActivity.kt ary ampio amin'ny asa initViews (#6):
Raha resaka bokotra sy switch, Kotlin dia mandamina ny zava-drehetra tena mahafinaritra! Ampio ny kaody etsy ambany amin'ny asa fampiakarana sy fampihenana rehetra
(#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()
}
}
Eto ny kaody dia miaro ny fiasa fanampiny miaraka amin'ny sanda ambony indrindra (MAX_TIP & MAX_PEOPLE). Fanampin'izany, ny code dia miaro ny fiasan'ny fihenam-bidy miaraka amin'ny sanda kely indrindra (MIN_TIP & MIN_PEOPLE).
Ankehitriny dia ampifandraisinay amin'ny mpihaino ny bokotra amin'ny asa initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Azonao atao izao ny manampy ny fahavoazana, ny toro-hevitra ary ny isan'ny mpandray anjara amin'ny fivoriana. Eny, izao ny zava-dehibe indrindra ...
Fizarana kajy ny saran-dalana
Ity kaody ity dia manisa ny fandaniana (#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)
}
Eny ary, eto dia antsoina hoe asa izay ahafahana mandinika ny isan'ny olona ao amin'ny orinasa ary manao kajy ny toro-hevitra (#15):
private fun incrementTip() {
β¦
}
private fun decrementTip() {
β¦
}
private fun incrementPeople() {
β¦
}
private fun decrementPeople() {
β¦
}
Andao hanomboka ny fampiharana. Toa sady miasa tsara. Mety ho tsara kokoa anefa izany.
Raha miezaka manaisotra ny sandan'ny volavolan-dalΓ na ianao ary mampitombo ny isan'ny toro-hevitra na namana, dia hianjera ny fampiharana satria tsy mbola misy fanamarinana ny sandan'ny vidin'ny zero. Ankoatra izany, raha manandrana manova ny sandan'ny faktiora ianao dia tsy havaozina ny fiampangana.