Kotlin-də ipucu kalkulyatoru qurmaq: necə işləyir?
Kotlin-də sadə tip hesablama tətbiqini necə yaratmağı sizə göstəririk. Daha dəqiq desək, Kotlin 1.3.21, Android 4, Android Studio 3. Məqalə, ilk növbədə, Android proqramlarının hazırlanmasında öz səyahətinə başlayanlar üçün maraqlı olacaq. Bu proqram daxilində nəyin və necə işlədiyini anlamağa imkan verir.
Belə bir kalkulyator, bir restoranda və ya kafedə vaxt keçirməyə qərar verən bir şirkətdən məsləhətlərin miqdarını hesablamaq lazım olduqda faydalıdır. Əlbəttə ki, hamı deyil və həmişə ofisiantlar üçün çay buraxmır, bu daha çox Qərb ənənəsidir, lakin hər halda belə bir tətbiqin hazırlanması prosesi maraqlıdır.
Xatırladırıq:"Habr" ın bütün oxucuları üçün - "Habr" promosyon kodundan istifadə edərək hər hansı bir Skillbox kursuna yazılarkən 10 000 rubl endirim.
Siz ümumi məbləğin istədiyiniz faizini, yığıncaqda iştirak edənlərin sayını daxil edirsiniz və nəticə əldə edirsiniz - qalmalı olan məsləhətlərin miqdarı.
Başlanğıc
Proqramın tam interfeysi belə görünür:
İlk hərəkət - Layihə bazasını yükləyin. Onu Android Studio 3.0 və ya daha yeni versiyada açın. Layihəni qurub icra edirik və ağ ekran görürük. Hər şey yaxşı, olması lazım olduğu kimidir.
İstifadəçinin hərəkətləri layihədə xronoloji ardıcıllıqla yazılır ki, hər şey aydın olsun. Onu görmək üçün View -> Tool Windows -> TODO açın.
Layihəni öyrənirik və rəng palitrasını qiymətləndirmək üçün colors.xml faylını açırıq. strings.xml mətn məlumatlarını (başlıqları), styles.xml isə bir neçə şrift şablonunu ehtiva edir.
Xərc Bölməsinin İnkişafı
activity_main.xml-ni açın və aşağıdakı kodu LinearLayout-a əlavə edin (#1):
Tətbiqin əsas vəzifəsi restoranda keçirilən toplantılarda iştirak edənlərin hər biri üçün fərdi xərcləri hesablamaq olduğundan, costPerPersonTextView əsas rol oynayır.
EditText girişi bir sətirlə məhdudlaşdırır, bu parametr NumberDecimal inputType olaraq təyin edilməlidir.
Test üçün layihəyə başlayırıq və ümumi zərərin parametrlərini (sınmış fincanlar, boşqablar və s.)
"İnsanlar və məsləhətlər" bölməsinin inkişafı
İpucu məbləği seçicisi əlavə etmək üçün aşağıdakı kodu yeni LinearLayout bölməsinə yapışdırın (#4):
Bu kod parçası ipucu məbləğini dəqiq hesablamaq üçün tələb olunur. Defolt mətn dəyəri 20-dir. ImageButtons yazma icazəsi olan qovluqda nişanlar ilə təmin edilir.
Bütün bölməni kopyalayın və aşağıdakıları əlavə edin (№ 5):
Düymələr və açarlar baxımından Kotlin hər şeyi çox gözəl təşkil edir! Aşağıdakı kodu bütün artırma və azaltma funksiyalarına əlavə edin
(#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()
}
}
Burada kod artım funksiyalarını maksimum dəyərlərlə qoruyur (MAX_TIP & MAX_PEOPLE). Bundan əlavə, kod azalma funksiyalarını minimum dəyərlərlə qoruyur (MIN_TIP & MIN_PEOPLE).
İndi düymələri initViews funksiyasında dinləyicilərə bağlayırıq (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
İndi siz ümumi zərər, məsləhətlər və görüş iştirakçılarının sayını əlavə edə bilərsiniz. Yaxşı, indi ən vacib şey ...
Xərclər bölməsi
Bu kod xərcləri hesablayır (№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)
}
Yaxşı, burada şirkətdəki insanların sayını nəzərə almağa və ipucunu hesablamağa imkan verən bir funksiya çağırılır (№15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Tətbiqi işə salırıq. Görünür və əla işləyir. Amma daha yaxşı ola bilərdi.
Hesab məbləğini silməyə və sonra göstərişlərin və ya dostların sayını artırmağa cəhd etsəniz, hələ sıfır xərc yoxlaması olmadığı üçün proqram qəzaya uğrayacaq. Üstəlik, faktura məbləğini dəyişməyə cəhd etsəniz, ödənişlər yenilənməyəcək.