המפה עוזרת למצוא שיעור לפי הרעיון שרוצים ללמוד, ולא רק לפי שם הפרויקט. אם זו הפעם הראשונה שלכם באתר, התחילו באחד משלושת מסלולי הלמידה; אם כבר יש לכם פרויקט, עברו ישירות לטבלת הנושא הדרוש.
איך קוראים את המפה?
| סימון עומק | מה תמצאו בקישור |
|---|---|
| שיעור מעשי | בנייה מודרכת של תוצר עובד, עם קוד ושלבי בדיקה. |
| העמקה | הסבר של הרעיון, השוואה או ניתוח שעוזרים להבין למה הקוד בנוי כך. |
| משלים | אזכור קצר, תרגול, שאלות חזרה או שער למצגת/קובץ נוסף. זה אינו תחליף לשיעור מלא. |
לעיתים אותו נושא מופיע בכמה פרויקטים. כדאי לבחור תחילה את הקישור ששייך לפרויקט שלכם, ואחר כך לקרוא קישור נוסף כדי לראות שימוש אחר באותו רעיון.
שלושה מסלולי למידה מרכזיים
TicTacMenu — ממסכים ותפריטים למשחק רשת
המסלול מתאים למי שרוצה להכיר בהדרגה ניווט, הפרדת מודל, תקשורת, התחברות ו־Firebase:
- Activities ותפריט Overflow
- יצירת תפריט מגירה מבוסס Fragments
- הוספת Fragments לתפריט
- יצירת מודל Tic-Tac-Toe
- חיבור המסך למודל
- משחק מרובה משתתפים עם SignalR
- שכפול Activity והוספתו למגירה
- יצירת מסך Login והגדרתו כ־Launcher
- הקמת Firebase, RTDB ו־Authentication
- התחברות במייל ובסיסמה
- התחברות Google ו־SHA-1
- מעבר ל־View Binding, Binding ב־MainActivity ו־Binding ב־Fragments ובתפריט
- לובי וחדרי משחק ב־RTDB
- מצב משחק והאזנה בזמן אמת ב־RTDB
CollectCircles — ציור, משחק, שמירה ועבודה ברקע
התחילו ב־ציור ומחלקות, המשיכו ל־מצב משחק ומגע, ל־זמן, שיא ומחזור חיים, ולבסוף קראו את המחשבה הביקורתית על OOP ו־Views.
ההמשך מחולק לשתי מפות קצרות:
- פרקים 5–7: מהתראה מקומית ל־FCM ולתשתית ענן
- פרקים 8–18: ממשחק קצר לכלכלה מתמשכת, אנימציה ו־WorkManager
Requery — מסד SQLite מקומי בארבעה תוצרים עובדים
- Entity ראשון: Student מקצה לקצה
- קשר רבים־לרבים עם דירוג ושדרוג סכימה
- INNER JOIN typed ושלושה טפסי הוספה
- RecyclerView ומחיקה לפי מפתח מורכב
Android Studio, מבנה הפרויקט ותהליך העבודה
| נושא | עומק | איפה לומדים |
|---|---|---|
יצירת Activity דרך Android Studio |
שיעור מעשי | הוספת Activities, יצירת LoginActivity מן ה־GUI |
AndroidManifest, Launcher ורישום מסכים |
שיעור מעשי | תפריט Fragments והגדרת Launcher, שכפול ורישום Activity, LoginActivity כ־Launcher יחיד |
| ניווט בתצוגת Android ומיקום קבצים | שיעור מעשי | Layout Editor, Requery — הכנת Gradle וה־Entity הראשון |
Gradle, build.gradle.kts ו־Version Catalog |
שיעור מעשי | Requery — הוספת ספרייה ומעבד annotations, FCM — תלויות וערכים מקומיים, תמיכה ב־Jetpack Compose |
| טיפול בהתנגשות גרסאות, AGP ו־SDK | שיעור מעשי | תיקון בעיית גרסאות |
| פירמוט קוד וקיצור מקשים ב־IDE | משלים | הגדרת Ctrl+K,D לפירמוט |
| שינוי שם פרויקט, package, namespace ו־application ID | שיעור מעשי | שינוי שם לפרויקט קיים |
| Git, ענפים, Pull Request וסקירת קוד | שיעור מעשי | Pull Requests ב־Android Studio ובכלים נוספים |
| תכנון ותיעוד פרויקט לקראת הצגה | משלים | שאלות שבוחן עשוי לשאול, האקתון פיתוח מונחה־AI |
Activities, Intents וניווט
| נושא | עומק | איפה לומדים |
|---|---|---|
מעבר בין Activities בעזרת Intent מפורש |
שיעור מעשי | Activities בתפריט Overflow, שכפול Activity וניתוב מן המגירה |
| תפריט Overflow וקובץ menu XML | שיעור מעשי | הוספת Activities לתפריט |
Navigation Drawer, DrawerLayout ו־NavigationView |
שיעור מעשי | יצירת תפריט מגירה, הוספת יעדים למגירה |
| Fragments וניווט בתוך Activity יחיד | שיעור מעשי | Fragments בתוך תפריט מגירה, שלושה Fragments ו־Bottom Navigation |
onCreateView לעומת onViewCreated |
העמקה | מדריך Fragments |
קבלת תוצאה מפעולה חיצונית עם ActivityResultLauncher |
משלים | מפגשי אנדרואיד — ActivityResultLauncher |
מעבר מושהה עם Handler ו־Looper |
שיעור מעשי | LoginActivity לפני חיבור Authentication |
מחזור חיים, מצב ושמירה קלה
| נושא | עומק | איפה לומדים |
|---|---|---|
מחזור החיים של Activity |
שיעור מעשי | עצירת עדכוני זמן ב־onStop, חישוב התקדמות ב־onStart וב־onStop; משלים: מצגת מחזור החיים |
SharedPreferences לקריאה וכתיבה |
שיעור מעשי | שמירת שיא, מצב משחק מתמשך, שמירת בחירת “הישאר מחובר” |
| מצב בזיכרון לעומת מצב שנשמר במכשיר | העמקה | כלכלה מתמשכת ב־CollectCircles |
שמירת מצב מסך ב־Bundle |
משלים | מצגת מחזור החיים |
| זמן מונוטוני לעומת שעון קיר | העמקה | SystemClock למדידת משחק, בחירת שעון להתקדמות אופליין |
Callback פשוט באמצעות Runnable |
שיעור מעשי | הודעה מן ה־View ל־Activity על סיום משחק, אירוע איסוף עיגול |
XML, רכיבי UI ו־View Binding
| נושא | עומק | איפה לומדים |
|---|---|---|
| בניית מסך ב־Layout Editor | שיעור מעשי | CollectCircles — בניית המסך דרך ה־GUI, LoginActivity דרך ה־GUI |
XML layouts, אילוצים, משקלים ומשאבי strings.xml |
שיעור מעשי | מסך המשחק CollectCircles, מסך Login, טבלת Requery |
View Binding במקום findViewById |
שיעור מעשי | עקרונות ומעבר הדרגתי, MainActivity, Fragments ו־MenuActivity, Requery בפרויקט חדש |
| אירועי לחיצה ו־listeners | שיעור מעשי | חיבור לוח המשחק למודל, הוספות למסד דרך דיאלוגים |
AlertDialog ו־Material Dialog |
שיעור מעשי | הודעת סיום משחק, חנות Pushers, טפסי הוספה למסד |
Spinner ו־ArrayAdapter |
שיעור מעשי | בחירת חדר משחק ב־RTDB |
ListView והעברת רשימה בין מסכים |
תרגול משלים | תרגיל ToDo List |
RecyclerView, Adapter ו־ViewHolder |
שיעור מעשי | Requery — טבלה ומחיקה |
| Jetpack Compose בתוך פרויקט שהתחיל ב־Java/XML | שיעור מעשי | הוספת תמיכת Compose ו־Activity ב־Kotlin |
Canvas, מגע, גאומטריה ואנימציה
| נושא | עומק | איפה לומדים |
|---|---|---|
יצירת View מותאם אישית ו־onDraw |
שיעור מעשי | ציור עיגולים ב־Canvas |
Canvas, Paint ומערכת הצירים |
שיעור מעשי | הלוח הראשון, ציור דמות Pusher |
אירועי מגע, תפיסה, גרירה ושחרור עם MotionEvent |
שיעור מעשי | מצב משחק וגרירת עיגולים |
| מרחק בין מרכזים, חפיפה והכלה של עיגולים | העמקה | שלוש בדיקות גאומטריות, יצירת עיגולים חוקיים וגרירה למטרה |
לולאת ציור ו־postInvalidateOnAnimation |
שיעור מעשי | מצב משחק אוטונומי, אנימציית Pusher |
הפרדת update מ־draw ותנועה לפי זמן |
העמקה | Pusher הולך — זמן, פריימים ותנועה מחזורית |
| חיישנים | משלים | מפגשי אנדרואיד — Sensors |
| קול, וידאו ואנימציות משאבים | משלים | אינדקס חומרי AppSchool |
OOP, Java וארכיטקטורה
| נושא | עומק | איפה לומדים |
|---|---|---|
| הפרדת מצב המשחק מן המסך | שיעור מעשי | יצירת TicTacToeModel, חיבור המודל ל־Activity, מחלקת Game ב־CollectCircles |
| מחלקות, בנאים, שדות, getters ומתודות | שיעור מעשי | Circle ו־Target, Entity ראשון ב־Requery |
ירושה (extends) ו־super |
שיעור מעשי | Target יורש מ־Circle |
| Composition לעומת ירושה, ו־View לעומת אובייקט מודל | העמקה | מחשבה ביקורתית על עצמים, Views וירושה |
| MVC לעומת MVP | העמקה | השוואה ודוגמאות Java |
| פונקציות טהורות והפרדת חישוב מ־Android | שיעור מעשי | מחשבון התקדמות אופליין, חישוב מחיר ובדיקת יחידה |
| Lambda ו־listeners ב־Java | שיעור מעשי | אירועי לוח Tic-Tac-Toe; משלים: אינדקס AppSchool |
נתונים מקומיים: SQLite ו־Requery
| נושא | עומק | איפה לומדים |
|---|---|---|
| Entity, annotations וקוד שנוצר | שיעור מעשי | Student מקצה לקצה |
| פתיחת מסד, insert ו־select typed | שיעור מעשי | Student מקצה לקצה |
| קשר רבים־לרבים עם נתון נוסף | שיעור מעשי | Student–Watching–Movie עם rating |
| שדרוג סכימה בלי למחוק נתונים | שיעור מעשי | Migration מגרסה 1 לגרסה 2 |
INNER JOIN typed ו־Tuple |
שיעור מעשי | JOIN והוספות |
| מחיקה לפי מפתח מורכב ורענון UI | שיעור מעשי | RecyclerView ומחיקת Watching |
SQLite ישיר עם SQLiteOpenHelper ו־Cursor |
שיעור מעשי חלופי | מדריך SQLite בסיסי |
Firebase, התחברות ונתונים בזמן אמת
| נושא | עומק | איפה לומדים |
|---|---|---|
| יצירת פרויקט Firebase וחיבור אפליקציית Android | שיעור מעשי | Firebase Project + RTDB + Authentication |
google-services.json, package name ותקלות התאמה |
שיעור מעשי | בדיקות ותיקון No matching client, שינוי שם פרויקט מחובר לשירות |
| Firebase Authentication במייל ובסיסמה | שיעור מעשי | Login ו־FBRef |
| Google Sign-In, OAuth, SHA-1 ו־Firebase credential | שיעור מעשי | Google OAuth Login |
DatabaseReference, כתיבה וקריאה מ־RTDB |
שיעור מעשי | פרסום חדרי משחק |
ValueEventListener ועדכונים בזמן אמת |
שיעור מעשי | רשימת חדרים חיה, משחק וצפייה בזמן אמת |
| הסרת listener והתאמה למחזור החיים | שיעור מעשי | ניקוי מאזין החדרים |
| מבנה נתונים ב־RTDB והמרת אובייקט Java לעץ JSON | העמקה | מודל חדר והזרימה בין מכשירים |
| כללי RTDB וגבול האמון | העמקה ראשונית | כללי כיתה והסיכון שבכללים פתוחים, תשתית הענן של CollectCircles |
רשת, API וענן
| נושא | עומק | איפה לומדים |
|---|---|---|
| לקוח SignalR, חיבור לשרת ושליחת אירועים | שיעור מעשי | Tic-Tac-Toe מרובה משתתפים |
| זרימת הודעה בין UI, Service, שרת ולקוח אחר | העמקה | תרשים הרצף של SignalR |
| קריאת API ושליחת JSON מ־Android | שיעור מעשי | Interactions API ו־LLM ב־Java |
| Firebase Cloud Functions ופריסה | שיעור מעשי מתקדם | תשתית ענן ל־FCM |
| הפרדת סודות וערכי סביבה מן הקוד | שיעור מעשי | הגדרות מקומיות ל־FCM |
| JSON כמבנה נתונים מקומי | שיעור מעשי | מערכת שעות ב־JSON |
הרשאות, התראות ועבודה ברקע
| נושא | עומק | איפה לומדים |
|---|---|---|
| הרשאות רגילות, מסוכנות ומיוחדות | שיעור מעשי | מדריך הרשאות |
| בקשת הרשאה בזמן ריצה | שיעור מעשי | מדריך הרשאות, הרשאת התראות ב־Android 13+ |
| Notification Channel ובניית התראה מקומית | שיעור מעשי | CollectCircles 5 — התראה מקומית |
| FCM, topics, data message ו־notification message | שיעור מעשי | CollectCircles 6 — התראות דרך FCM |
FirebaseMessagingService ורישום Service ב־Manifest |
שיעור מעשי | CollectCircles 6 — שירות ההודעות |
WorkManager ו־OneTimeWorkRequest |
שיעור מעשי | Worker ראשון ובדיקת זכאות |
PeriodicWorkRequest, אילוצי סוללה ועבודה ייחודית |
שיעור מעשי | עבודה מחזורית |
| תזמון מתוך JSON והעברת input ל־Worker | שיעור מעשי | מערכת שעות ב־JSON |
| תיאום כתיבה בין UI ל־Worker | שיעור מעשי מתקדם | כתיבה בטוחה מן ה־Worker |
| מסלול WorkManager קצר המתמקד בהתראה | שיעור מעשי חלופי | התראה מחזורית ו־Brag |
Thread, UI thread ו־runOnUiThread |
משלים | מפגשי אנדרואיד — Thread |
| Service, AlarmManager ו־BroadcastReceiver | משלים | מפגשי אנדרואיד עם זאב |
בדיקות, תקלות ואיכות
| נושא | עומק | איפה לומדים |
|---|---|---|
| בדיקת יחידה לפונקציית Java טהורה | שיעור מעשי | בדיקת מחיר Pusher, בדיקת מחשבון אופליין |
ההבדל בין test ל־androidTest |
העמקה קצרה | בדיקת מחיר Pusher |
| בדיקות ידניות ותוצאה נצפית | שיעור מעשי | רשימת הבדיקה של Requery 1, בדיקת RTDB בשני מכשירים, בדיקות FCM |
| אבחון Firebase, SHA-1 ו־Google Sign-In | שיעור מעשי | פתרון תקלות OAuth |
| אבחון Gradle, AGP ו־AAR Metadata | שיעור מעשי | תיקון בעיית גרסאות |
| שאלות שמוודאות הבנה לקראת בחינת פרויקט | תרגול משלים | שאלות שבוחן עשוי לשאול |
מקורות רוחביים ומשלימים
- אינדקס חומרי AppSchool מפנה לפרקי עזר בנושאים כמו layouts, listeners, Intents, קבצים, מדיה, אנימציה, Threads, Services, חיישנים ו־SQLite. חלק מן החומר נמצא בקובצי PDF, ולכן הוא מסומן במפה כמקור משלים ולא כשיעור Markdown מלא.
- מפגשי אנדרואיד עם זאב מרכז מצגות והקלטות על WorkManager, חיישנים, Services, התראות, Fragments, מחזור חיים, Threads, BroadcastReceiver, JSON API, תפריטים ו־ActivityResultLauncher.
- שאלות שבוחן עשוי לשאול מתאימות לחזרה אחרי שהיישום כבר עובד: תפריטים, קלט, קבצים, מסדי נתונים, תקשורת, Intents, תכנות וחוויית משתמש.
למורים ולמתכנני מסלול: מפת היעד והפערים בלימודי Android מפרידה בין נושאים חסרים, מקורות משלימים ונושאים שכבר נלמדים אך ראויים להעמקה.