Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

Kotlin တလင် ရိုသရဟင်သသော အကဌံပဌုချက် တလက်ချက်နည်သကို ဖန်တီသနည်သကို သင့်အာသ ပဌသထာသသည်။ ပိုမိုတိကျစေရန်အတလက်၊ Kotlin 1.3.21၊ Android 4၊ Android Studio 3။ Android အက်ပ်လီကေသရဟင်သမျာသ တီထလင်ဖန်တီသရာတလင် ၎င်သတို့၏ခရီသကို စတင်သူမျာသအတလက် ပထမဆုံသအနေဖဌင့် ကဆောင်သပါသသည် စိတ်ဝင်စာသစရာကောင်သမည်ဖဌစ်သည်။ ၎င်သသည် သင့်အာသ အပလီကေသရဟင်သအတလင်သ မည်သည့်အရာနဟင့် မည်သို့အလုပ်လုပ်သည်ကို နာသလည်နိုင်စေပါသည်။

စာသသောက်ဆိုင် သို့မဟုတ် ကော်ဖီဆိုင်တလင် အချိန်ဖဌုန်သရန် ဆုံသဖဌတ်သည့် ကုမ္ပဏီတစ်ခုမဟ အကဌံပဌုချက် ပမာဏကို တလက်ချက်ရန် လိုအပ်သည့်အခါ ထိုဂဏန်သတလက်စက်သည် အသုံသဝင်သည်။ ဟုတ်ပါတယ်၊ လူတိုင်သက စာသပလဲထိုသတလေအတလက် လက်ဖက်ရည်ကို အမဌဲမချန်ထာသပါဘူသ၊ ဒါက အနောက်တိုင်သ အစဉ်အလာတစ်ခုပါပဲ၊ ဒါပေမယ့် ဒီလို အက်ပလီကေသရဟင်သကို တီထလင်တဲ့ လုပ်ငန်သစဉ်က ဘယ်လိုပဲဖဌစ်ဖဌစ် စိတ်ဝင်စာသစရာပါပဲ။

ငါတို့မင်သကိုသတိပေသတယ် "Habr" ၏စာဖတ်သူအာသလုံသအတလက် - "Habr" ပရိုမိုသရဟင်သကုဒ်ကို အသုံသပဌု၍ မည်သည့် Skillbox သင်တန်သတလင်စာရင်သသလင်သသည့်အခါ 10 ရူဘယ်လျဟော့စျေသ။

Skillbox မဟ အကဌံပဌုထာသသည်- လက်တလေ့သင်တန်သ "မိုဘိုင်သ Developer PRO.

၎င်သသည် လုပ်ဆောင်ချက်တလင် အပလီကေသရဟင်သ၏ပုံသဏ္ဌာန်ဖဌစ်သည်။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

သင်သည် စုစုပေါင်သပမာဏ၏ လိုချင်သောရာခိုင်နဟုန်သ၊ အစည်သအဝေသတလင်ပါဝင်သူအရေအတလက်ကို ထည့်သလင်သပဌီသ ရလဒ်ကိုရယူပါ - ချန်ထာသသင့်သော အကဌံပဌုချက်ပမာဏ။

စတင်

အက်ပ်၏ အင်တာဖေ့စ် အပဌည့်အစုံမဟာ ကကဲ့သို့ ဖဌစ်သည်-
Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

ပထမလုပ်ဆောင်ချက်- ပရောဂျက်အခဌေခံဒေါင်သလုဒ်လုပ်ပါ။. ၎င်သကို Android Studio 3.0 သို့မဟုတ် နောက်ပိုင်သတလင် ဖလင့်ပါ။ ကျလန်ုပ်တို့သည် ပရောဂျက်ကို တည်ဆောက်ပဌီသ လုပ်ဆောင်ပဌီသ အဖဌူရောင်စခရင်ကို မဌင်ရသည်။ ဖဌစ်သင့်သည်အတိုင်သ အာသလုံသအဆင်ပဌေပါတယ်။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

အသုံသပဌုသူ လုပ်ဆောင်ချက်မျာသကို ပရောဂျက်တလင် အချိန်နဟင့် တပဌေသညီ ရေသထာသသောကဌောင့် အရာအာသလုံသ ရဟင်သလင်သပဌတ်သာသသည်။ ၎င်သကိုကဌည့်ရဟုရန် View -> Tool Windows -> TODO ကိုဖလင့်ပါ။

ကျလန်ုပ်တို့သည် ပရောဂျက်ကို လေ့လာပဌီသ အရောင် palette ကို အကဲဖဌတ်ရန် Colors.xml ကိုဖလင့်ပါ။ strings.xml တလင် စာသာသဒေတာ (စာတန်သမျာသ) ပါ၀င်ပဌီသ styles.xml တလင် ဖောင့်ပုံစံပုံစံမျာသစလာ ပါရဟိသည်။

ကုန်ကျစရိတ်အပိုင်သ ဖလံ့ဖဌိုသတိုသတက်ရေသ

activity_main.xml ကိုဖလင့်ပဌီသ 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"/>

ယခုသင်သည် တန်ဖိုသမျာသလမ်သညလဟန်ကို ပုံစံသလင်သနိုင်သည် သို့မဟုတ် အရောင်မျာသကို အသုံသပဌု၍ ကစာသနိုင်သည်။ material.io ကိရိယာ.

ယခု ပရောဂျက်သည် ကကဲ့သို့ ဖဌစ်သည်-

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။
သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ အသုံသပဌုသူထည့်သလင်သသည့်ဒေတာအပေါ်အခဌေခံ၍ ကုန်ကျစရိတ်မျာသကို တလက်ချက်ပါသည်။

အကောင့်ဖလံ့ဖဌိုသတိုသတက်မဟုအပိုင်သ

ကုန်ကျစရိတ်အပိုင်သ (#2) ပဌီသနောက် LinearLayout တလင် အောက်ပါကုဒ်ကို ထည့်ပါ။

<LinearLayout
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    android_orientation="vertical"
    android_background="@color/colorAccent">
 
<! — TODO #3: Build Bill Section →
 

 
</LinearLayout>

TODOs စာရင်သပဌီသနောက် LinearLayout ကိုပိတ်ပဌီသ 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"/>

အပလီကေသရဟင်သ၏အဓိကတာဝန်မဟာ စာသသောက်ဆိုင်ရဟိစုဝေသပလဲမျာသတလင်ပါဝင်သူတိုင်သအတလက် တစ်ညသချင်သကုန်ကျစရိတ်မျာသကို တလက်ချက်ရန်ဖဌစ်သောကဌောင့် costPerPersonTextView သည် အဓိကအခန်သကဏ္ဍမဟပါဝင်သည်။

EditText သည် ထည့်သလင်သမဟုကို စာကဌောင်သတစ်ကဌောင်သတလင် ကန့်သတ်ထာသပဌီသ၊ ကကန့်သတ်ချက်ကို NumberDecimal inputType အဖဌစ် သတ်မဟတ်ရပါမည်။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။
ကျလန်ုပ်တို့သည် စမ်သသပ်ခဌင်သအတလက် ပရောဂျက်ကို စတင်ပဌီသ စုစုပေါင်သ ပျက်စီသမဟု၏ ဘောင်မျာသ (ကလဲနေသော ခလက်မျာသ၊ ပန်သကန်မျာသ စသည်) ကို ထည့်သလင်သပါ။

"လူမျာသနဟင့် အကဌံဥာဏ်မျာသ" ကဏ္ဍကို ဖလံ့ဖဌိုသတိုသတက်ရေသ

အကဌံပဌုချက် ပမာဏရလေသချယ်ပေသသူကို ထည့်ရန်၊ အောက်ဖော်ပဌပါ ကုဒ်ကို 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>

ထိပ်ဖျာသပမာဏကို တိကျစလာတလက်ချက်ရန် ကကုဒ်အပိုင်သတစ်ခု လိုအပ်ပါသည်။ မူရင်သစာသာသတန်ဖိုသမဟာ 20 ဖဌစ်သည်။ ImageButtons မျာသကို ရေသသာသခလင့်ခလင့်ပဌုချက်ပါရဟိသော ဖိုဒါတစ်ခုတလင် အိုင်ကလန်မျာသ ပေသထာသသည်။

အပိုင်သကို အပဌည့်အစုံကူသယူပဌီသ အောက်ပါ (#5) ကို ထည့်ပါ။

  • ImageButton ids (subtractPeopleButton၊ addPeopleButton)
  • TextView ids (numberOfPeopleStaticText၊ numberOfPeopleTextView)
  • numberOfPeopleTextView အတလက် မူရင်သစာသာသ (4 ဖဌစ်သင့်သည်)။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

ယခု အပလီကေသရဟင်သကို စတင်သည့်အခါ ပဌေစာပမာဏကို ပေါင်သထည့်နိုင်သည်၊ Add/Subtract ခလုတ်မျာသလည်သ အလုပ်လုပ်သော်လည်သ ယခုအချိန်အထိ ဘာမဟမဖဌစ်ပါ။

မဌင်ကလင်သမျာသထည့်ပါ။

MainActivity.kt ကိုဖလင့်ပဌီသ ၎င်သကို 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
 
}

ခလုတ်မျာသကို အပဌီသသတ်ခဌင်သ။

ခလုတ်နဟိပ်ခဌင်သမျာသအတလက် ပံ့ပိုသမဟုထည့်ရန်၊ အတန်သအဆင့် (#7) တလင် View.OnClickListener ကို အကောင်အထည်ဖော်ပါ။

အတန်သ MainActivity- AppCompatActivity(), View.OnClickListener {

ယခု ပရောဂျက်ကို ပဌုစုခဌင်သသည် အလုပ်မဖဌစ်ပါ၊ နောက်ထပ် အဆင့် (#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()
        }
    }

ခလုတ်မျာသနဟင့် ခလုတ်မျာသနဟင့်ပတ်သက်၍ Kotlin သည် အရာအာသလုံသကို အလလန်ကောင်သမလန်စလာ စီမံထာသသည်။ အောက်ဖော်ပဌပါ ကုဒ်ကို အတိုသနဟင့် အလျဟော့လုပ်သည့် လုပ်ဆောင်ချက်မျာသအာသလုံသတလင် ထည့်ပါ။
(#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()
        }
    }

ကနေရာတလင် ကုဒ်သည် အမျာသဆုံသတန်ဖိုသမျာသ (MAX_TIP & MAX_PEOPLE) ဖဌင့် တိုသမဌင့်လုပ်ဆောင်မဟုမျာသကို ကာကလယ်ပေသပါသည်။ ထို့အပဌင်၊ ကုဒ်သည် အနိမ့်ဆုံသတန်ဖိုသမျာသ (MIN_TIP & MIN_PEOPLE) ဖဌင့် လျဟော့ချခဌင်သလုပ်ဆောင်ချက်မျာသကို ကာကလယ်ပေသပါသည်။

ယခု ကျလန်ုပ်တို့သည် initViews လုပ်ဆောင်ချက် (#13) ရဟိ နာသဆင်သူမျာသနဟင့် ခလုတ်မျာသကို ချိတ်တလဲထာသပါသည်။

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

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

ယခု သင်သည် စုစုပေါင်သပျက်စီသဆုံသရဟုံသမဟု၊ အကဌံပဌုချက်မျာသနဟင့် အစည်သအဝေသတက်ရောက်သူအရေအတလက်ကို ထည့်သလင်သနိုင်ပါပဌီ။ ကဲ အရေသကဌီသဆုံသက...

ကုန်ကျစရိတ်အပိုင်သ

ကကုဒ်သည် ကုန်ကျစရိတ်မျာသကို တလက်ချက်သည် (#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)
 
}

ကောင်သပဌီ၊ ကနေရာတလင် ကုမ္ပဏီရဟိ လူအရေအတလက်ကို ထည့်သလင်သတလက်ချက်ပဌီသ အကဌံပဌုချက် (#15) ကို တလက်ချက်နိုင်စေသည့် လုပ်ဆောင်ချက်ကို ခေါ်သည်။

private fun incrementTip() {
 


 
}
 
private fun decrementTip() {
 


 
}
 
private fun incrementPeople() {
 


 
}
 
private fun decrementPeople() {
 


 
}

ကျလန်ုပ်တို့သည် အပလီကေသရဟင်သကို စတင်လိုက်ပါ။ ရုပ်ရည်ကောင်သမလန်ပဌီသ အလုပ်လုပ်ပါတယ်။ ဒါပေမယ့် ပိုကောင်သလာနိုင်တယ်။

ဘေလ်ပမာဏကို ဖယ်ရဟာသပဌီသနောက် အရိပ်အမဌလက် သို့မဟုတ် သူငယ်ချင်သအရေအတလက်ကို တိုသမဌဟင့်ရန် ကဌိုသစာသပါက၊ ကုန်ကျစရိတ် သုညအတလက် စစ်ဆေသခဌင်သမရဟိသေသသောကဌောင့် အက်ပ်သည် ပျက်စီသသလာသမည်ဖဌစ်သည်။ ထို့အပဌင်၊ ငလေတောင်သခံလလဟာပမာဏကို ပဌောင်သလဲရန် ကဌိုသစာသပါက၊ ကျသင့်ငလေမျာသကို အပ်ဒိတ်လုပ်မည်မဟုတ်ပါ။

နောက်ဆုံသအဆင့်

TextWatcher (#16) ထည့်ပါ-

အတန်သအစာသ MainActivity- AppCompatActivity(), View.OnClickListener, TextWatcher {

ထို့နောက် ကျလန်ုပ်တို့သည် billEditText နာသဆင်သူ (#17) ကို မဌဟုပ်နဟံထာသသည်-

billEditText.addTextChangedListener(က)

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) {}

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

ကဲ၊ ခုတော့ အရာအာသလုံသ အဆင်ပဌေသလာသပဌီ။ ဂုဏ်ယူပါသည်၊ သင်သည် Kotlin တလင် သင်၏ကိုယ်ပိုင် "Tip Calculator" ကို ရေသသာသခဲ့သည်။

Kotlin တလင် tip calculator တစ်ခုတည်ဆောက်ခဌင်သ- ၎င်သသည်မည်သို့အလုပ်လုပ်သနည်သ။

Skillbox မဟ အကဌံပဌုထာသသည်-

source: www.habr.com

မဟတ်ချက် Add