Membuat kalkulator tip di Kotlin: bagaimana cara kerjanya?
Kami tunjukkan cara membuat aplikasi penghitungan tip sederhana di Kotlin. Lebih tepatnya Kotlin 1.3.21, Android 4, Android Studio 3. Artikel ini akan menarik terutama bagi mereka yang memulai perjalanannya dalam mengembangkan aplikasi Android. Ini memungkinkan Anda untuk memahami apa dan bagaimana cara kerjanya di dalam aplikasi.
Kalkulator semacam itu berguna saat Anda perlu menghitung jumlah tip dari perusahaan yang memutuskan untuk menghabiskan waktu di restoran atau kafe. Tentu saja, tidak semua orang dan tidak selalu meninggalkan teh untuk pelayan, ini lebih merupakan tradisi Barat, tetapi proses pengembangan aplikasi semacam itu menarik.
Kami mengingatkan:untuk semua pembaca "Habr" - diskon 10 rubel saat mendaftar di kursus Skillbox apa pun menggunakan kode promosi "Habr".
Anda memasukkan persentase yang diinginkan dari jumlah total, jumlah peserta rapat dan mendapatkan hasilnya - jumlah tip yang harus tersisa.
Memulai
Antarmuka lengkap aplikasi terlihat seperti ini:
Tindakan pertama - unduhan basis proyek. Buka di Android Studio 3.0 atau lebih baru. Kami membangun dan menjalankan proyek dan melihat layar putih. Semuanya baik-baik saja, sebagaimana mestinya.
Tindakan pengguna ditulis dalam proyek dalam urutan kronologis, sehingga semuanya menjadi jelas. Untuk melihatnya, buka View -> Tool Windows -> TODO.
Kami mempelajari proyek dan membuka colors.xml untuk mengevaluasi palet warna. strings.xml berisi data teks (caption), dan styles.xml berisi beberapa template font.
Pengembangan bagian biaya
Buka activity_main.xml dan tambahkan kode di bawah ke LinearLayout (#1):
Karena tugas utama aplikasi ini adalah menghitung biaya individu untuk setiap peserta pertemuan di restoran, costPerPersonTextView memainkan peran utama.
EditText membatasi input ke satu baris, parameter ini harus disetel ke NumberDecimal inputType.
Kami memulai proyek untuk pengujian dan memasukkan parameter kerusakan total (cangkir pecah, piring, dll.)
Pengembangan bagian "Orang dan Tip".
Untuk menambahkan pemilih jumlah tip, rekatkan kode di bawah ini ke bagian LinearLayout baru (#4):
Potongan kode ini diperlukan untuk menghitung jumlah tip secara akurat. Nilai teks default adalah 20. ImageButtons dilengkapi dengan ikon di folder dengan izin menulis.
Salin seluruh bagian dan tambahkan yang berikut (#5):
Id ImageButton (kurangi PeopleButton, addPeopleButton)
ID TextView (numberOfPeopleStaticText, numberOfPeopleTextView)
DefaultText untuk numberOfPeopleTextView (harus 4).
Sekarang, saat memulai aplikasi, dimungkinkan untuk menambahkan jumlah faktur, tombol Tambah / Kurangi juga berfungsi, tetapi sejauh ini tidak terjadi apa-apa.
Tambahkan Tampilan
Buka MainActivity.kt dan tambahkan ini ke fungsi initViews (#6):
Dalam hal tombol dan sakelar, Kotlin mengatur semuanya dengan sangat keren! Tambahkan kode di bawah ini ke semua fungsi kenaikan dan penurunan
(#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()
}
}
Di sini kode melindungi fungsi kenaikan dengan nilai maksimum (MAX_TIP & MAX_PEOPLE). Selain itu, kode tersebut melindungi fungsi pengurangan dengan nilai minimum (MIN_TIP & MIN_PEOPLE).
Sekarang kita mengikat tombol ke pendengar dalam fungsi initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Anda sekarang dapat menambahkan total kerusakan, tip, dan jumlah peserta rapat. Nah, sekarang yang paling penting...
bagian Biaya
Kode ini menghitung biaya (#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)
}
Nah, di sini disebut fungsi yang memungkinkan untuk memperhitungkan jumlah orang di perusahaan dan menghitung tip (#15):
private fun incrementTip() {
β¦
}
private fun decrementTip() {
β¦
}
private fun incrementPeople() {
β¦
}
private fun decrementPeople() {
β¦
}
Kami meluncurkan aplikasi. Ini terlihat dan berfungsi dengan baik. Tapi itu bisa lebih baik.
Jika Anda mencoba menghapus jumlah tagihan dan kemudian menambah jumlah petunjuk atau teman, aplikasi akan macet karena belum ada cek untuk biaya nol. Selain itu, jika Anda mencoba mengubah jumlah tagihan, tagihan tidak akan diperbarui.
Langkah terakhir
Tambahkan TextWatcher (#16):
kelas MainActivity: AppCompatActivity(), View.OnClickListener, TextWatcher {
Kemudian kami menyematkan pendengar billEditText (#17):
billEditText.addTextChangedListener(ini)
Plus tambahkan kode untuk mengeksekusi 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) {}
Nah, sekarang semuanya berfungsi! Selamat, Anda telah menulis "Kalkulator Tip" Anda sendiri di Kotlin.