Ho aha sebali sa malebela Kotlin: se sebetsa joang?
Re u bontša mokhoa oa ho theha ts'ebeliso e bonolo ea malebela Kotlin. E le ho nepahala haholoanyane, Kotlin 1.3.21, Android 4, Android Studio 3. Sehlooho sena se tla thahasellisa, pele ho tsohle, bakeng sa ba qalang leeto la bona ho nts'etsapele lisebelisoa tsa Android. E u lumella ho utloisisa hore na ke eng le hore na e sebetsa joang ka har'a sesebelisoa.
Calculator e joalo e na le thuso ha o hloka ho bala palo ea malebela a k'hamphani e etsang qeto ea ho qeta nako reschorenteng kapa cafe. Ha e le hantle, hase motho e mong le e mong 'me ha a lule a siea tee bakeng sa baepi, sena ke moetlo oa Bophirimela, empa mokhoa oa ho hlahisa kopo e joalo o thahasellisa ho sa tsotellehe boemo leha e le bofe.
Re hopotsa:bakeng sa babali bohle ba "Habr" - theolelo ea li-ruble tse 10 ha u ngolisa thupelong efe kapa efe ea Skillbox u sebelisa khoutu ea papatso ea "Habr".
Mona ke hore na sesebelisoa se shebahala joang ha se sebetsa:
U kenya peresente e lakatsehang ea chelete eohle, palo ea barupeluoa sebokeng 'me u fumane sephetho - palo ea malebela a lokelang ho sala.
Qala
Khokahano e felletseng ea app e shebahala tjena:
Ketso ea pele - download motheo oa morero. E bule ho Android Studio 3.0 kapa hamorao. Re haha le ho tsamaisa morero mme re bona skrine e tšoeu. Ntho e 'ngoe le e 'ngoe e ntle, joalokaha e lokela ho ba joalo.
Liketso tsa basebelisi li ngotsoe morerong ka tatellano ea liketsahalo, e le hore ntho e 'ngoe le e' ngoe e hlake. Ho e sheba, bula View -> Tool Windows -> TODO.
Re ithuta morero le ho bula mebala.xml ho lekola phalete ea mebala. strings.xml e na le data ea mongolo (litlhaloso), le litaele.xml e na le lithempleite tsa litlhaku tse 'maloa.
Ntlafatso ea Karolo ea Litšenyehelo
Bula activity_main.xml mme o kenye khoutu e ka tlase ho LinearLayout (#1):
Kaha mosebetsi oa mantlha oa kopo ke ho bala litšenyehelo tsa motho ka mong bakeng sa bankakarolo ba bang likopanong tsa reschorenteng, costPerPersonTextView e bapala karolo ea bohlokoa.
EditText e beha meeli moleng o le mong, paramethara ena e tlameha ho hlophisoa ho NumberDecimal inputType.
Re qala morero oa tlhahlobo mme re kenya litekanyo tsa tšenyo e felletseng (likopi tse robehileng, lipoleiti, jj.)
Nts'etsopele ea karolo ea "Batho le Malebela".
Ho kenya mokhethoa oa chelete ea malebela, beha khoutu e ka tlase karolong e ncha ea LinearLayout (#4):
Sekhechana sena sa khoutu sea hlokahala ho bala chelete ea malebela ka nepo. Boleng ba mongolo oa kamehla ke 20. Li-ImageButtons li fanoa ka litšoantšo ka har'a foldara e nang le tumello ea ho ngola.
Kopitsa karolo kaofela ebe u eketsa tse latelang (#5):
TextView ID (numberOfPeopleStaticText, numberOfPeopleTextView)
DefaultText bakeng sa numberOfPeopleTextView (e lokela ho ba 4).
Joale, ha u qala ts'ebeliso, hoa khonahala ho eketsa chelete ea invoice, li-buttons tsa Add / Tlosa le tsona lia sebetsa, empa ho fihlela joale ha ho letho le etsahalang.
Kenya Maikutlo
Bula MainActivity.kt 'me u kenye sena mosebetsing oa initViews (#6):
Mabapi le li-buttons le li-switches, Kotlin e na le ntho e 'ngoe le e' ngoe e hlophisitsoeng hantle haholo! Kenya khoutu e ka tlase ho mesebetsi eohle ea increment le decrement
(#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()
}
}
Mona khoutu e sireletsa mesebetsi ea increment ka boleng bo phahameng (MAX_TIP & MAX_PEOPLE). Ntle le moo, khoutu e sireletsa mesebetsi ea phokotso ka boleng bo tlase (MIN_TIP & MIN_PEOPLE).
Joale re tlama likonopo ho bamameli ho ts'ebetso ea initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Hona joale o ka eketsa tšenyo eohle, malebela, le palo ea bankakarolo sebokeng. Joale, ntho ea bohlokoa ka ho fetisisa ...
Karolo ea litšenyehelo
Khouto ena e bala litšenyehelo (#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)
}
Joale, mona ho bitsoa ts'ebetso e etsang hore ho khonehe ho ela hloko palo ea batho ba k'hamphani le ho bala ntlha (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Re qala kopo. E shebahala ebile e sebetsa hantle. Empa ho ka ba betere.
Haeba u leka ho tlosa chelete ea sekoloto ebe u eketsa palo ea malebela kapa metsoalle, sesebelisoa se tla senyeha hobane ha ho na cheke bakeng sa litšenyehelo tsa zero. Ho feta moo, haeba u leka ho fetola chelete ea invoice, litefiso li ke ke tsa ntlafatsoa.
Mehato ea ho qetela
Kenya TextWatcher (#16):
sehlopha sa MainActivity: AppCompatActivity(), View.OnClickListener, TextWatcher {
Ebe re kenya momameli oa BillEditText (#17):
BillEditText.addTextChangedListener(ena)
Hape eketsa khoutu ho sebelisa 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) {}
Joale, tsohle lia sebetsa! Kea u lebohela, u ngotse "Tipping Calculator" ea hau Kotlin.