שודרג לגירסה 1.0.4 - 24/08/2025
שלום לכולם
אני שמח לשתף אתכם בפרויקט שסיימתי לאחרונה, לאחר המון עבודה מאתגרת.
מדובר בספריית אנדרואיד (מודול) של Date Picker עברי, שכל מפתח יכול לשלב בקלות באפליקציה שלו.
הרבה פעמים באפליקציות אנחנו צריכים לתת למשתמש לבחור תאריך, למשל יום הולדת או תאריך לאירוע. באנדרואיד יש בורר תאריכים מובנה, אבל הוא מציג רק תאריכים לועזיים. אם רוצים לבחור תאריך עברי, אין פתרון פשוט. (יש פתרון להשתמש ב Date Picker הלועזי ולאחר הבחירה להמיר לעברית בעזרת ספריית Zmanim (KosherJava) אבל זה רעיון )
לכן, בניתי רכיב מוכן שאפשר להוסיף לכל אפליקציה, והוא פותח חלון עם לוח שנה עברי מלא.
בניתי DialogFragment עצמאי המציג לוח שנה עברי מלא. המודול מבוסס על ספריית Zmanim (KosherJava) לניהול הלוגיקה המורכבת של הלוח העברי.
מעודכן 1.0.4
תכונות עיקריות:
ממשק לוח שנה מלא: תצוגה גרפית של החודש העברי עם שמות הימים כל הימים החודשים והשנים מוצגים בפורמט עברי .
ניווט מהיר ונוח: מעבר קל בין חודשים ושנים באמצעות לחצני חצים.
בחירה מהירה: לחיצה על שם החודש או השנה פותחת רשימה לבחירה מהירה.
קפיצה לתאריך: כפתור ייעודי פותח דיאלוג חיפוש עם השלמה אוטומטית ל-50 שנה קדימה ואחורה.
התאמה אישית מלאה:
אפשרות להשבית בחירה של תאריכים מהעבר.
אפשרות להשבית בחירה של שבתות וחגים.
תמיכה מלאה בלוח העברי:
תמיכה מלאה בשנים מעוברות (אדר א' ואדר ב').
התאמה אוטומטית של מספר הימים בחודשים מלאים וחסרים (כסלו/חשוון).
שילוב פשוט (Plug & Play):
הספרייה ניתנת לשילוב בכל פרויקט אנדרואיד דרך JitPack.
הוראות שימוש והתקנה
הפרויקט כולו הוא קוד פתוח וזמין במלואו ב-GitHub.
1. הוספת JitPack לקובץ settings.gradle.kts:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
2. הוספת התלות בספרייה לקובץ app/build.gradle.kts:
dependencies {
implementation("com.github.yt2178:DatePickerHebrew:1.0.3")
}
3. דוגמת קוד לשימוש בסיסי ב- Activity:
public class MainActivity extends AppCompatActivity implements HebrewDatePickerDialog.OnDateSetListener {
private TextView mySelectedDateTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
mySelectedDateTextView = findViewById(R.id.your_textView);
Button myButton = findViewById(R.id.your_button);
myButton.setOnClickListener(v -> showDatePicker());
}
@Override
public void onDateSet(JewishCalendar selectedDate, String formattedDate) {
// התאריך נבחר!
// הדיאלוג מחזיר גם את אובייקט התאריך וגם מחרוזת מעוצבת
mySelectedDateTextView.setText("נבחר: " + formattedDate);
}
private void showDatePicker() {
HebrewDatePickerDialog dialog = new HebrewDatePickerDialog();
dialog.setOnDateSetListener(this);
dialog.show(getSupportFragmentManager(), "HebrewDatePickerDialog");
}
}
4. דוגמת קוד לשימוש עם השבתת תאריכי עבר ועם השבתת חגים ומועדים:
private void showDatePicker() {
new HebrewDatePickerDialog.Builder()
.setDisablePastDates(true) // השבתת תאריכי עבר
.setDisableHolidaysAndShabbat(true) // השבתת שבתות וחגים
.setOnDateSetListener(this)
.build()
.show(getSupportFragmentManager(), "HebrewDatePickerDialog");
}
הפרוייקט בפיתוח אשמח להערות והארות
גירסה 1.0.1
גירסה 1.0.2
גירסה 1.0.3
גרסה נוכחית: 1.0.4 (כוללת את כל התכונות החדשות).
קישורים
מאגר הפרויקט ב-GitHub (קוד מקור והוראות מלאות):
https://github.com/yt2178/DatePickerHebrew
אשמח מאוד לקבל כל משוב, הערה, דיווח על באגים או הצעות לשיפור.
תודה רבה!