Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Waxaan kuu sheegaynaa sida loo sameeyo codsi fudud oo loogu talagalay xisaabinta talooyinka Kotlin. Si sax ah, Kotlin 1.3.21, Android 4, Android Studio 3. Maqaalku wuxuu noqon doonaa mid xiiso leh, marka hore, kuwa bilaabaya safarkooda horumarinta codsiga Android. Waxay kuu ogolaaneysaa inaad fahanto waxa iyo sida ay uga shaqeyso gudaha codsiga.

Xisaabiyahani waxa uu ku anfacayaa marka aad u baahato in aad xisaabiso qadarka talooyinka shirkad go'aansata in ay wakhti ku qaadato makhaayad ama kafateeri. Dabcan, qof kastaa had iyo jeer ma tago tilmaanta mudalabyada; Tani waa wax badan oo ka mid ah dhaqanka reer galbeedka, laakiin habka horumarinta codsigan oo kale waa mid xiiso leh kiis kasta.

Waxaan xusuusineynaa: dhammaan akhristayaasha "Habr" - qiimo dhimis ah 10 rubles marka la qorayo koorso kasta oo Skillbox ah iyadoo la adeegsanayo koodhka xayeysiinta "Habr".

Skillbox waxay ku talinaysaa: Koorso wax ku ool ah " Horumariyaha mobilada PRO.

Tani waa sida uu codsigu u egyahay marka uu shaqaynayo:

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Waxaad gelisaa boqolkiiba inta la rabo ee wadarta guud, tirada ka qaybgalayaasha kulanka, oo hel natiijada - qaddarka caarada ah ee aad ka baxdo.

Bilaabashada

Interface-ka codsiga oo dhamaystiran waxa uu u eegyahay sidan:
Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Talaabada koowaad - soo dejinta mashruuca saldhigga. Ku fur Android Studio 3.0 ama ka dib. Waxaan dhiseynaa oo bilownay mashruuca waxaanan aragnaa shaashad cad. Wax walba waa hagaagsan yihiin, waa sida ay tahay.

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Ficilada isticmaaleyaashu waxay mashruuca ugu qoran yihiin siday u kala horreeyaan si wax walba loo caddeeyo. Si aad u aragto, fur View -> Tool Windows -> TODO.

Waxaan baraneynaa mashruuca oo aan furin midabada.xml si aan u qiimeyno palette midabka. strings.xml waxa uu ka kooban yahay xogta qoraalka (saxiixyada), styles.xml waxa uu ka kooban yahay dhowr qaab oo far.

Horumarinta qaybta kharashka

Fur activity_main.xml oo ku dar summada hoose ee LinearLayout (#1):

<TextView
    android_id="@+id/expensePerPersonTextView"
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_paddingTop="30dp"
    style="@style/h1Bold"
    android_textColor="@color/colorAccent"
    android_text="0"/>
 
<TextView
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_paddingBottom="25dp"
    style="@style/h2"
    android_textColor="@color/colorAccent"
    android_text="@string/perPersonStaticText"/>

Hadda waxaad qaabayn kartaa tusaha qiyamka ama waxaad ku ciyaari kartaa midabyo adoo isticmaalaya material.io qalab.

Hadda mashruucu wuxuu u eg yahay sidan:

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?
Sida aad arki karto, kharashyada waxaa lagu xisaabiyaa iyadoo lagu saleynayo xogta uu galiyay isticmaaluhu.

Horumarinta qaybta xisaabaadka

Ku dar koodka hoose ee Layout Linear ka dib Qaybta Kharashka (#2):

<LinearLayout
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    android_orientation="vertical"
    android_background="@color/colorAccent">
 
<! β€” TODO #3: Build Bill Section β†’
 
… 
</LinearLayout>

Waxaan xireynaa LinearLayout ka dib liiska TODOs, ka dibna waxaan ku darnaa kood cusub, annaga oo gelineyna gudaha LinearLayout (#3):

<TextView
      android_layout_margin="15dp"
      android_layout_width="match_parent"
      android_layout_height="wrap_content"
      android_textColor="@color/colorWhite"
      style="@style/h4"
      android_text="@string/billStaticText"/>
 
<EditText
      android_id="@+id/billEditText"
      android_layout_width="match_parent"
      android_layout_height="wrap_content"
      android_textColor="@color/colorWhite"
      android_inputType="numberDecimal"
      android_maxLines="1"
      style="@style/h2Bold"
      android_text="0"/>

Maadaama hawsha ugu weyn ee codsigu ay tahay in la xisaabiyo kharashyada shakhsiga ah ee ka qaybgale kasta oo ka qayb galaya kulanka makhaayadda, costPersonTextView ayaa ciyaaraya doorka ugu muhiimsan.

EditText waxa ay xaddidaysaa wax gelinta hal xariiq, cabbirkan waa in lagu dejiyaa NumbarDecimal inputType.

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?
Waxaan u daah-furnay mashruuca tijaabada oo aan galnay cabbirrada waxyeelada guud (koobabka jabay, taarikada, iwm.)

Horumarinta qaybta "Dadka iyo Talooyin".

Si loogu daro xulashada mugga caarada, ku dheji summada hoose qaybta cusub ee LinearLayout (#4):

<TextView
      android_layout_margin="15dp"
      android_layout_width="match_parent"
      android_layout_height="wrap_content"
      android_textColor="@color/colorWhite"
      style="@style/h4"
      android_text="@string/tipStaticText"/>
 
<LinearLayout
      android_layout_width="match_parent"
      android_layout_height="wrap_content"
      android_orientation="horizontal">
 
<ImageButton
        android_id="@+id/subtractTipButton"
        style="@style/operationButton"
        android_layout_marginLeft="20dp"
        android_layout_marginStart="20dp"
        android_src="@drawable/subtract"/>
 
<TextView
        android_id="@+id/tipTextView"
        android_layout_margin="15dp"
        android_layout_width="0dp"
        android_layout_height="wrap_content"
        android_textColor="@color/colorWhite"
        android_layout_weight="1"
        style="@style/h2Bold"
        android_text="20%"/>
 
<ImageButton
        android_id="@+id/addTipButton"
        style="@style/operationButton"
        android_layout_marginEnd="20dp"
        android_layout_marginRight="20dp"
        android_src="@drawable/add"/>
 
</LinearLayout>

Qaybtan koodka ayaa lagama maarmaan u ah in si sax ah loo xisaabiyo qaddarka caarada. Qiimaha qoraalka caadiga ah waa 20. ImageButtons waxaa la siiyaa calaamado ku jira gal oo leh oggolaansho qoraal.

Nuqul ka nuqul ka samee qaybta oo ku dar kuwa soo socda (#5):

  • ImageButton ids (ka-goyntaPeopleButton, addPeopleButton)
  • ids TextView (lambarkaOfPeopleStaticText, nambarOfPeopleTextView)
  • DefaultText ee nambarkaOfPeopleTextView (waa inuu noqdaa 4).

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Hadda, marka aad bilowdo codsiga, waxaa jira fursad aad ku darto qaddarka qaansheegta, badhamada "Ku dar / Kala-goynta" sidoo kale way shaqeeyaan, laakiin weli waxba ma dhicin.

Ku darida Muuqaallada

Fur MainActivity.kt oo tan ku dar shaqada initViews (#6):

private fun initViews() {
        expensePerPersonTextView = findViewById(R.id.expensePerPersonTextView)
        billEditText = findViewById(R.id.billEditText)
 
addTipButton = findViewById(R.id.addTipButton)
        tipTextView = findViewById(R.id.tipTextView)
        subtractTipButton = findViewById(R.id.subtractTipButton)
 
addPeopleButton = findViewById(R.id.addPeopleButton)
        numberOfPeopleTextView = findViewById(R.id.numberOfPeopleTextView)
        subtractPeopleButton = findViewById(R.id.subtractPeopleButton)
 
//TODO #8: Bind Buttons to Listener
 
//TODO #16: Bind EditText to TextWatcher
 
}

Dhamaystirka badhamada

Si loogu daro taageerada gujisyada badhanka, waxaanu hirgelinaynaa View.OnClick Dhageyste heerka fasalka (#7):

fasalka MainActivity: AppCompatActivity (), View.OnClick Dhageyste {

Suurtagal ma noqon doonto in la ururiyo mashruuca hadda; waxaad u baahan tahay inaad sameyso dhowr tillaabo oo dheeraad ah (#8):

override fun onClick(v: View?) {
        when (v?.id) {
            R.id.addTipButton -> incrementTip()
            R.id.subtractTipButton -> decrementTip()
            R.id.addPeopleButton -> incrementPeople()
            R.id.subtractPeopleButton -> decrementPeople()
        }
    }

Marka la eego badhamada iyo furayaasha, Kotlin waxay abaabushaa wax kasta oo aad u fiican! Ku dar koodka hoose dhammaan hawlaha kordhinta iyo dhimista
(# 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()
        }
    }

Halkan koodku wuxuu ilaaliyaa hawlaha kordhinta ee leh qiyamka ugu sarreeya (MAX_TIP & MAX_PEOPLE). Intaa waxaa dheer, koodku wuxuu ilaaliyaa hawlaha dhimista qiimayaasha ugu yar (MIN_TIP & MIN_PEOPLE).

Hadda waxaan badhamada kula xiriirinnaa dhageystayaasha shaqada initViews (#13):

private fun initViews() {
 
...
 
addTipButton.setOnClickListener(this)
        subtractTipButton.setOnClickListener(this)
 
addPeopleButton.setOnClickListener(this)
        subtractPeopleButton.setOnClickListener(this)
 
//TODO #15: Bind EditText to TextWatcher
}

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Waxaad hadda ku dari kartaa wadarta waxyeelada, talooyinka, iyo tirada ka qaybgalayaasha kulanka. Hagaag, hadda waxa ugu muhiimsan ...

Qaybta xisaabinta kharashka

Koodhkani wuxuu xisaabiyaa kharashyada (#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)
 
}

Hagaag, halkan waxaa loogu yeeraa shaqo taas oo suurtogal ka dhigaysa in la tixgeliyo tirada dadka ee shirkadda oo la xisaabiyo talooyinka (#15):

private fun incrementTip() {
 
…
 
}
 
private fun decrementTip() {
 
…
 
}
 
private fun incrementPeople() {
 
…
 
}
 
private fun decrementPeople() {
 
…
 
}

Aan bilowno codsiga Waxay u egtahay oo u shaqeysaa si weyn. Laakiin way fiicnaan kartaa.

Haddii aad isku daydo inaad ka saarto lacagta biilka ka dibna kordhiso tirada talooyinka ama asxaabta, codsigu wuu burburi doonaa sababtoo ah weli ma jiro hubin qiimaha eber. Intaa waxaa dheer, haddii aad isku daydo inaad bedesho qaddarka biilka, kharashyada lama cusbooneysiin doono.

Tallaabooyinka ugu dambeeya

Ku dar TextWatcher (#16):

Fasalka MainActivity: AppCompatActivity (), View.OnClick Dhageyste, TextWatcher {

Ka dib waxaan dhejinnay dhageystaha biilkaEditText (#17):

biilkaEditText.addTextBeddelay Dhageyste(kan)

Intaa waxaa dheer waxaan ku darnaa kood si loo fuliyo 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) {}

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Hagaag, hadda gabi ahaanba wax walba way shaqeeyaan! Hambalyo, waxaad Kotlin ku qortay "Tip Calculator" adiga kuu gaar ah.

Abuuritaanka xisaabiyaha caarada ee Kotlin: sidee buu u shaqeeyaa?

Skillbox waxay ku talinaysaa:

Source: www.habr.com

Add a comment