Prohoster > Blog > tin tức mạng > Xây dựng công cụ tính tiền boa trong Kotlin: nó hoạt động như thế nào?
Xây dựng công cụ tính tiền boa trong Kotlin: nó hoạt động như thế nào?
Chúng tôi chỉ cho bạn cách tạo một ứng dụng tính tiền boa đơn giản trong Kotlin. Nói chính xác hơn là Kotlin 1.3.21, Android 4, Android Studio 3. Trước hết, bài viết sẽ rất thú vị đối với những ai bắt đầu hành trình phát triển ứng dụng Android. Nó cho phép bạn hiểu những gì và cách thức hoạt động bên trong ứng dụng.
Một máy tính như vậy rất hữu ích khi bạn cần tính toán số tiền boa từ một công ty quyết định dành thời gian ở nhà hàng hoặc quán cà phê. Tất nhiên, không phải tất cả mọi người và không phải lúc nào cũng pha trà cho người phục vụ, đây là truyền thống của phương Tây hơn, nhưng quá trình phát triển một ứng dụng như vậy trong mọi trường hợp đều rất thú vị.
Chúng tôi nhắc nhở:cho tất cả độc giả của "Habr" - giảm giá 10 rúp khi đăng ký bất kỳ khóa học Skillbox nào bằng mã khuyến mại "Habr".
Bạn nhập tỷ lệ phần trăm mong muốn của tổng số tiền, số lượng người tham gia cuộc họp và nhận được kết quả - số tiền boa đáng để lại.
Bắt đầu
Giao diện đầy đủ của ứng dụng trông như thế này:
Hành động đầu tiên - tải xuống cơ sở dự án. Mở nó trong Android Studio 3.0 trở lên. Chúng tôi xây dựng và chạy dự án và thấy một màn hình trắng. Mọi thứ đều ổn, như nó phải vậy.
Các hành động của người dùng được viết trong dự án theo trình tự thời gian để mọi thứ đều rõ ràng. Để xem nó, mở View -> Tool Windows -> TODO.
Chúng tôi nghiên cứu dự án và mở tệp colors.xml để đánh giá bảng màu. strings.xml chứa dữ liệu văn bản (chú thích) và styles.xml chứa một số mẫu phông chữ.
Phát triển phần chi phí
Mở activity_main.xml và thêm mã bên dưới vào LinearLayout (#1):
Vì nhiệm vụ chính của ứng dụng là tính toán chi phí cá nhân cho từng người tham gia các cuộc tụ họp trong nhà hàng, nên costPerPersonTextView đóng vai trò chính.
EditText giới hạn đầu vào ở một dòng, tham số này phải được đặt thành Kiểu đầu vào NumberDecimal.
Chúng tôi bắt đầu dự án để thử nghiệm và nhập các thông số về tổng thiệt hại (chén, đĩa vỡ, v.v.)
Phát triển phần "Mọi người và Mẹo"
Để thêm bộ chọn số tiền boa, hãy dán mã bên dưới vào phần LinearLayout mới (#4):
Đoạn mã này là bắt buộc để tính toán chính xác số tiền boa. Giá trị văn bản mặc định là 20. ImageButtons được cung cấp các biểu tượng trong một thư mục có quyền ghi.
Sao chép toàn bộ phần và thêm phần sau (#5):
Id ImageButton (trừPeopleButton, addPeopleButton)
Id TextView (numberOfPeopleStaticText, numberOfPeopleTextView)
Văn bản mặc định cho numberOfPeopleTextView (nên là 4).
Bây giờ, khi bắt đầu ứng dụng, có thể thêm số tiền hóa đơn, các nút Thêm / Trừ cũng hoạt động, nhưng cho đến nay không có gì xảy ra.
Thêm lượt xem
Mở MainActivity.kt và thêm phần này vào hàm initViews (#6):
Về các nút và công tắc, Kotlin có mọi thứ được tổ chức rất tuyệt vời! Thêm mã bên dưới vào tất cả các hàm tăng và giảm
(#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()
}
}
Ở đây mã bảo vệ các hàm gia tăng với giá trị tối đa (MAX_TIP & MAX_PEOPLE). Ngoài ra, mã bảo vệ các hàm giảm với giá trị nhỏ nhất (MIN_TIP & MIN_PEOPLE).
Bây giờ chúng tôi liên kết các nút với người nghe trong chức năng initViews (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
Giờ đây, bạn có thể thêm tổng thiệt hại, mẹo và số lượng người tham gia cuộc họp. Chà, bây giờ điều quan trọng nhất...
phần chi phí
Mã này tính toán chi phí (#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)
}
Chà, đây là một hàm được gọi để có thể tính đến số lượng người trong công ty và tính tiền boa (#15):
private fun incrementTip() {
…
}
private fun decrementTip() {
…
}
private fun incrementPeople() {
…
}
private fun decrementPeople() {
…
}
Chúng tôi khởi chạy ứng dụng. Nó trông và hoạt động tuyệt vời. Nhưng nó có thể tốt hơn.
Nếu bạn cố gắng xóa số tiền trong hóa đơn và sau đó tăng số lượng gợi ý hoặc số lượng bạn bè, ứng dụng sẽ gặp sự cố vì chưa kiểm tra chi phí bằng không. Ngoài ra, nếu bạn cố gắng thay đổi số tiền trên hóa đơn, các khoản phí sẽ không được cập nhật.