کوٹلن میں ٹپ کیلکولیٹر بنانا: یہ کیسے کام کرتا ہے؟
ہم آپ کو دکھاتے ہیں کہ کوٹلن میں ایک سادہ ٹپ کیلکولیشن ایپلی کیشن کیسے بنایا جائے۔ مزید واضح طور پر، کوٹلن 1.3.21، اینڈرائیڈ 4، اینڈرائیڈ اسٹوڈیو 3۔ مضمون سب سے پہلے ان لوگوں کے لیے دلچسپ ہوگا جو اینڈرائیڈ ایپلی کیشنز تیار کرنے میں اپنا سفر شروع کرتے ہیں۔ یہ آپ کو یہ سمجھنے کی اجازت دیتا ہے کہ ایپلی کیشن کے اندر کیا اور کیسے کام کرتا ہے۔
ایسا کیلکولیٹر اس وقت مفید ہوتا ہے جب آپ کو کسی ایسی کمپنی سے ٹپس کی مقدار کا حساب لگانا ہو جو ریستوران یا کیفے میں وقت گزارنے کا فیصلہ کرتی ہے۔ بے شک، ہر کوئی نہیں اور ہمیشہ ویٹروں کے لیے چائے نہیں چھوڑتا، یہ ایک مغربی روایت سے زیادہ ہے، لیکن اس طرح کی ایپلی کیشن تیار کرنے کا عمل کسی بھی صورت میں دلچسپ ہے۔
ہم آپ کو یاد دلاتے ہیں:"Habr" کے تمام قارئین کے لیے - "Habr" پروموشنل کوڈ کا استعمال کرتے ہوئے کسی بھی Skillbox کورس میں داخلہ لینے پر 10 rubles کی رعایت۔
یہاں یہ ہے کہ جب یہ ایپ چل رہی ہو تو کیسی دکھتی ہے:
آپ کل رقم کا مطلوبہ فیصد، میٹنگ میں شرکاء کی تعداد درج کرتے ہیں اور نتیجہ حاصل کرتے ہیں - تجاویز کی مقدار جو باقی رہنی چاہیے۔
شروع ہوا چاہتا ہے
ایپ کا مکمل انٹرفیس اس طرح لگتا ہے:
پہلا عمل - پروجیکٹ بیس ڈاؤن لوڈ. اسے اینڈروئیڈ اسٹوڈیو 3.0 یا بعد میں کھولیں۔ ہم پروجیکٹ بناتے اور چلاتے ہیں اور ایک سفید اسکرین دیکھتے ہیں۔ سب کچھ ٹھیک ہے، جیسا کہ ہونا چاہیے۔
صارف کے اعمال کو پراجیکٹ میں تاریخی ترتیب میں لکھا جاتا ہے، تاکہ سب کچھ واضح ہو۔ اسے دیکھنے کے لیے ویو -> ٹول ونڈوز -> ٹوڈو کھولیں۔
ہم پروجیکٹ کا مطالعہ کرتے ہیں اور رنگ پیلیٹ کا اندازہ کرنے کے لیے colors.xml کھولتے ہیں۔ strings.xml ٹیکسٹ ڈیٹا (کیپشن) پر مشتمل ہے، اور styles.xml کئی فونٹ ٹیمپلیٹس پر مشتمل ہے۔
لاگت کے حصے کی ترقی
activity_main.xml کھولیں اور نیچے کوڈ کو LinearLayout (#1) میں شامل کریں:
چونکہ ایپلیکیشن کا بنیادی کام ریستوراں میں ہونے والے اجتماعات میں شرکت کرنے والوں میں سے ہر ایک کے انفرادی اخراجات کا حساب لگانا ہے، اس لیے CostPerPersonTextView اہم کردار ادا کرتا ہے۔
EditText ان پٹ کو ایک لائن تک محدود کرتا ہے، یہ پیرامیٹر NumberDecimal inputType پر سیٹ ہونا چاہیے۔
ہم ٹیسٹ کے لیے پروجیکٹ شروع کرتے ہیں اور کل نقصان کے پیرامیٹرز درج کرتے ہیں (ٹوٹے ہوئے کپ، پلیٹیں وغیرہ)
"لوگ اور نکات" سیکشن کی ترقی
ٹپ رقم سلیکٹر شامل کرنے کے لیے، نیچے کوڈ کو ایک نئے LinearLayout سیکشن (#4) میں چسپاں کریں:
ٹپ کی رقم کو درست طریقے سے شمار کرنے کے لیے کوڈ کا یہ ٹکڑا درکار ہے۔ پہلے سے طے شدہ ٹیکسٹ ویلیو 20 ہے۔ امیج بٹن لکھنے کی اجازت کے ساتھ فولڈر میں آئیکون کے ساتھ فراہم کیے جاتے ہیں۔
پورے حصے کو کاپی کریں اور درج ذیل کو شامل کریں (#5):
امیج بٹن آئی ڈیز (پیوپل بٹن کو گھٹائیں، پیپل بٹن شامل کریں)
بٹنوں اور سوئچز کے لحاظ سے، کوٹلن میں ہر چیز بہت عمدہ ترتیب دی گئی ہے! تمام انکریمنٹ اور ڈیکریمنٹ فنکشنز میں نیچے کا کوڈ شامل کریں۔
(#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() {
…
}
ہم ایپلیکیشن لانچ کرتے ہیں۔ یہ بہت اچھا لگتا ہے اور کام کرتا ہے۔ لیکن یہ بہتر ہوسکتا ہے۔
اگر آپ بل کی رقم کو ہٹانے کی کوشش کرتے ہیں اور پھر اشارے یا دوستوں کی تعداد میں اضافہ کرتے ہیں تو ایپ کریش ہو جائے گی کیونکہ ابھی تک صفر لاگت کا کوئی چیک نہیں ہے۔ مزید یہ کہ، اگر آپ انوائس کی رقم کو تبدیل کرنے کی کوشش کرتے ہیں، تو چارجز اپ ڈیٹ نہیں کیے جائیں گے۔