سبد خرید

PersianDatePicker کتابخونه پیاده سازی تقویم فارسی در اندروید

PersianDatePicker کتابخونه پیاده سازی تقویم فارسی در اندروید

PersianDatePicker واقعا یکی از کتابخونه های کاربری ایرانی برای نمایش تقویم فارسی هستش.

توی این پست میخوام بهت یاد بدم که چطور از تقویم فارسی توی اندروید استفاده کنی.

به کمک این کتابخونه میتونی تقویم فارسی رو توی اپلیکیشنت پیاده سازی کنی و کاربر باهاش کار کنه.

عموما از این کتابخونه زمانی استفاده میشه که کاربر قصد داره یه تاریخی رو انتخاب کنه.

مثلا از کاربر میخوای تاریخ تولدش رو انتخاب کنه، یا هر تاریخ دیگه ای رو.

با این کتابخونه خیلی راحت میتونی همچین مواردی رو پیاده سازی کنی.

کار با این کتابخونه فوق العاده راحت هستش و توی چند خط کد، هم میتونی از نظر ظاهری کتابخونه رو مدیریت کنی و هم از نظر عملکرد.

دمو کتابخونه PersianDatePicker

برای اینکه بهتر با کارکرد کتابخونه آشنا بشی توصیه میکنم اول از همه دمو مربوط به اون رو ببینی.

 

 

خب حالا که با کارکرد این کتابخونه آشنا شدی، بهتر میتونی متوجه بشی که با چه کتابخونه خفنی روبرو هستیم.

آموزش استفاده از کتابخونه

برای استفاده از این کتابخونه باید کدهای زیر رو توی فایل gradle قرار بدی

اول از همه کد زیر رو توی build.gradle/project باید قرار بدی.

maven { url "https://jitpack.io" }

سپس کد زیر رو هم توی فایل build.gradle/app باید قرار بدی.

implementation 'com.github.aliab:Persian-Date-Picker-Dialog:1.7.0'

درنهایت پروژه رو sync کن تا کتابخونه با موفقیت به پروژه اضافه بشه.

حالا که کتابخونه رو اضافه کردی، زمان استفاده از کتابخونه رسیده.

کدهای مربوط به کتابخونه

برای استفاده از این کتابخونه نیازی نیستش که توی فایل XML کدی رو قرار بدی.

کدهای این کتابخونه رو باید توی کلاس (Activity/Fragment) قرار بدی.

من از کدهای زیر استفاده کردم.

جاواکاتلین
picker = new PersianDatePickerDialog(this)
               .setPositiveButtonString("باشه")
               .setNegativeButton("بیخیال")
               .setTodayButton("امروز")
               .setTodayButtonVisible(true)
               .setMinYear(1300)
               .setMaxYear(PersianDatePickerDialog.THIS_YEAR)
               .setMaxMonth(PersianDatePickerDialog.THIS_MONTH)
               .setMaxDay(PersianDatePickerDialog.THIS_DAY)
               .setInitDate(1370, 3, 13)
               .setActionTextColor(Color.GRAY)
               .setTypeFace(typeface)
               .setTitleType(PersianDatePickerDialog.WEEKDAY_DAY_MONTH_YEAR)
               .setShowInBottomSheet(true)
               .setListener(new PersianPickerListener() {
                   @Override
                   public void onDateSelected(@NotNull PersianPickerDate persianPickerDate) {
                       Log.d(TAG, "onDateSelected: " + persianPickerDate.getTimestamp());//675930448000
                       Log.d(TAG, "onDateSelected: " + persianPickerDate.getGregorianDate());//Mon Jun 03 10:57:28 GMT+04:30 1991
                       Log.d(TAG, "onDateSelected: " + persianPickerDate.getPersianLongDate());// دوشنبه  13  خرداد  1370
                       Log.d(TAG, "onDateSelected: " + persianPickerDate.getPersianMonthName());//خرداد
                       Log.d(TAG, "onDateSelected: " + PersianCalendarUtils.isPersianLeapYear(persianPickerDate.getPersianYear()));//true
                       Toast.makeText(context, persianPickerDate.getPersianYear() + "/" + persianPickerDate.getPersianMonth() + "/" + persianPickerDate.getPersianDay(), Toast.LENGTH_SHORT).show();
                   }

                   @Override
                   public void onDismissed() {

                   }
               });
picker = PersianDatePickerDialog(this)
    .setPositiveButtonString("باشه")
    .setNegativeButton("بیخیال")
    .setTodayButton("امروز")
    .setTodayButtonVisible(true)
    .setMinYear(1300)
    .setMaxYear(PersianDatePickerDialog.THIS_YEAR)
    .setMaxMonth(PersianDatePickerDialog.THIS_MONTH)
    .setMaxDay(PersianDatePickerDialog.THIS_DAY)
    .setInitDate(1400, 4, 19)
    .setActionTextColor(Color.GRAY)
    .setTypeFace(typeface)
    .setTitleType(PersianDatePickerDialog.WEEKDAY_DAY_MONTH_YEAR)
    .setShowInBottomSheet(true)
    .setListener(object : PersianPickerListener {
        override fun onDateSelected(persianPickerDate: PersianPickerDate) {
            persianPicker_faDate.text = persianPickerDate.persianLongDate
        }

        override fun onDismissed() {}
    })

توضیحات مربوط به کد ها

توی این بخش میخوام تک تک کدها رو توضیح بدم تا با کارکردشون بهتر آشنا بشی.

عملکرد مربوط به آن نام خصوصیت
ساخت آبجکت از کلاس اصلی و پاس دادن context به عنوان ورودی PersianDatePickerDialog(this)
متن مربوط به دکمه تایید setPositiveButtonString(“باشه”)
متن مربوط به دکمه کنسل setNegativeButton(“بیخیال”)
متن مربوط به دکمه امروز setTodayButton(“امروز”)
نمایش دکمه امروز setTodayButtonVisible(true)
کمترین سال قابل انتخاب توسط کاربر setMinYear(1300)
حداکثر سال قابل انتخاب توسط کاربر setMaxYear(PersianDatePickerDialog.THIS_YEAR)
حداکثر ماه قابل انتخاب توسط کاربر setMaxMonth(PersianDatePickerDialog.THIS_MONTH)
حداکثر روز قابل انتخاب توسط کاربر setMaxDay(PersianDatePickerDialog.THIS_DAY)
نمایش تاریخ پیشفرض setInitDate(1400, 4, 19)
رنگ نوشته های تقویم setActionTextColor(Color.GRAY)
اعمال فونت دلخواه setTypeFace(typeface)
نمایش متن عنوان دیالوگ setTitleType(PersianDatePickerDialog.WEEKDAY_DAY_MONTH_YEAR)
بازشدن تقویم از پایین صفحه setShowInBottomSheet(true)

برای اینکه بتونی از مقادیر موجود توی تقویم استفاده کنی باید از Listener ها اون استفاده کنی.

برای اینکار میتونی از Listener زیر استفاده کنی.

setListener(object : PersianPickerListener {
                override fun onDateSelected(persianPickerDate: PersianPickerDate) {
                    persianPicker_faDate.text = persianPickerDate.persianLongDate
                }

                override fun onDismissed() {}
            })

توی این مثال من از یک TextView استفاده کردم و مقادیر تقویم فارسی رو توش نشون دادم.

نمایش تقویم فارسی

برای نمایش تقویم هم باید از متد show استفاده کنی.

من برای اینکار یک دکمه قرار دادم که به محض اینکه کاربر روش کلیک میکنه تقویم برای باز میشه

persianPicker_showPicker.setOnClickListener {
    picker.show()
}

 

دیدگاه‌ها ۲