نوضح لك كيفية إنشاء تطبيق بسيط لحساب الإكرامية في Kotlin. لنكون أكثر دقة ، Kotlin 1.3.21 ، Android 4 ، Android Studio 3. ستكون المقالة مثيرة للاهتمام ، أولاً وقبل كل شيء ، لأولئك الذين بدأوا رحلتهم في تطوير تطبيقات Android. يسمح لك بفهم ماذا وكيف يعمل داخل التطبيق.
هذه الآلة الحاسبة مفيدة عندما تحتاج إلى حساب مقدار النصائح من شركة تقرر قضاء بعض الوقت في مطعم أو مقهى. بالطبع ، ليس الجميع ولا يتركون الشاي دائمًا للنادل ، فهذا يعد تقليدًا غربيًا ، لكن عملية تطوير مثل هذا التطبيق مثيرة للاهتمام على أي حال.
نذكر:لجميع قراء "Habr" - خصم 10 روبل عند التسجيل في أي دورة Skillbox باستخدام رمز "Habr" الترويجي.
يمكنك إدخال النسبة المئوية المرغوبة من المبلغ الإجمالي ، وعدد المشاركين في الاجتماع والحصول على النتيجة - مقدار النصائح التي تستحق المغادرة.
الشروع في العمل
تبدو الواجهة الكاملة للتطبيق كما يلي:
أول عمل - تحميل قاعدة المشروع. افتحه في Android Studio 3.0 أو أحدث. نقوم ببناء المشروع وتشغيله ونرى شاشة بيضاء. كل شيء على ما يرام ، كما ينبغي أن يكون.
تتم كتابة إجراءات المستخدم في المشروع بترتيب زمني ، بحيث يكون كل شيء واضحًا. لعرضه ، افتح عرض -> أداة Windows -> TODO.
ندرس المشروع ونفتح color.xml لتقييم لوحة الألوان. يحتوي strings.xml على بيانات نصية (تسميات توضيحية) ، ويحتوي styles.xml على العديد من قوالب الخطوط.
تطوير قسم التكلفة
افتح activity_main.xml وأضف الكود أدناه إلى LinearLayout (# 1):
فيما يتعلق بالأزرار والمفاتيح ، فإن 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
}
يمكنك الآن إضافة إجمالي الضرر والنصائح وعدد المشاركين في الاجتماع. حسنًا ، الآن أهم شيء ...
قسم التكلفة
هذا الرمز يحسب التكاليف (# 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.