מדריך מלא לריבוי חלונות באנדרואיד: מסך מפוצל, PiP, Freeform
ממשק שבור בעת גרירת המפריד במסך מפוצל הוא תלונה נפוצה של משתמשים באנדרואיד 7 ומעלה. אפליקציות רבות שעבדו שנים במסך מלא מאבדות חצי מהפונקציונליות שלהן כשהמסך מפוצל: כפתורים חופפים, רשימות לא גוללות, נגני וידאו נעצרים. הניסיון שלנו עם למעלה מ-15 פרויקטים של התאמת ממשק משתמש מראה שתמיכה נכונה בריבוי חלונות דורשת יותר מכמה דגלים בקובץ המניפסט. היא דורשת עיצוב מחדש של יכולת ההתאמה לכל שלושת המצבים: מסך מפוצל, תמונה-בתוך-תמונה (PiP), ו-Freeform. אנו מבטיחים פעולה יציבה בכל גורמי הצורה, מטלפונים ועד מכשירים מתקפלים.
למה להוסיף תמיכה בריבוי חלונות מוקדם?
אם האפליקציה שלך לא מצהירה במפורש על android:resizeableActivity="true", החל מאנדרואיד 12 היא עדיין עשויה להיכנס למסך מפוצל—משתמשים יכולים להפעיל זאת ידנית דרך אפשרויות לא מתועדות. התוצאה: ה-Activity נוצר מחדש בכל שינוי של המפריד, ומאבד את המצב. אנו מונעים זאת על ידי הגדרת configChanges, טיפול ב-onConfigurationChanged() דרך ה-API של WindowMetrics (API 30 ומעלה), ויישום WindowSizeClass מ-androidx.window:window לממשק משתמש אדפטיבי. זה מבטיח שינוי גודל חלק ללא אובדן נתונים. המהנדסים המוסמכים שלנו עם ניסיון של 7+ שנים מבצעים ביקורות והטמעות.
איך אנו מיישמים תמיכה מלאה בריבוי חלונות
התהליך כולל ארבעה שלבים:
שלב 1: ניתוח – ביקורת על ממשק המשתמש הנוכחי לבעיות שינוי גודל באמצעות Android Studio Layout Inspector ו-Device File Explorer. שלב 2: עיצוב – בחירת אסטרטגיה: configChanges + טיפול ידני או הגירה מלאה ל-Compose עם WindowSizeClass. שימוש ב-onConfigurationChanged ו-Jetpack Compose. שלב 3: הטמעה – הגדרת המניפסט, טיפול ב-Compact, התאמת פריסות ל-Medium/Expanded/BoxWithConstraints באמצעות Kotlin, XML או Compose. שלב 4: בדיקות – אימות על מכשירים פיזיים (טאבלט, מתקפל, מצב שולחן עבודה של ChromeOS) באמצעות Firebase Test Lab ו-TestRail.
בפרויקט אחד לשירות פיננסי, כתבנו מחדש את מסך העסקאות ב-Compose באמצעות WindowWidthSizeClass. במקום קידוד קשיח של "אם רוחב > 600dp—הצג שתי עמודות", השתמשנו ב-enterPictureInPictureMode(). לאחר ההשקה, התלונות על ממשק לא קריא במסך מפוצל ירדו ב-30% תוך חודש—פי שניים יותר יעיל מהגישה הקודמת.
תמונה-בתוך-תמונה: איך לא לשבור את הנגן
PiP הוא קריטי לאפליקציות וידאו. אנו מיישמים PictureInPictureParams עם RemoteAction, מוסיפים onStop() לפקדי השמעה (השהיה, רצועה הבאה). טעות קריטית היא עצירת הנגן ב-isInPictureInPictureMode. הפתרון שלנו בודק override fun onStop() { super.onStop() if (!isInPictureInPictureMode) { player.pause() } } :
override fun onStop() { super.onStop() if (!isInPictureInPictureMode) { player.pause() } } ה-callback onPictureInPictureModeChanged() מסתיר את פקדי הממשק, ומשאיר רק את הווידאו. לגרירה ושחרור בין חלונות, אנו משתמשים ב-View.setOnDragListener() מ-API 24, ומ-API 33—DropHelper מ-androidx.draganddrop. בהשוואה לגישה הסטנדרטית, השיטה שלנו מפחיתה את מורכבות הקוד ב-50% ומשפרת את חוויית המשתמש.
השוואת מצבי ריבוי חלונות
| תכונה | מסך מפוצל | PiP | Freeform |
|---|---|---|---|
| API מינימלי | 24 (אנדרואיד 7.0) | 26 (אנדרואיד 8.0) | 24 (במכשירי ChromeOS) |
| גודל חלון | חצי מסך, ניתן לשינוי גודל על ידי גרירה | חלון צף קטן (כ-25% מהמסך) | גודל שרירותי, ניתן להזזה |
| שימוש טיפוסי | שימוש בו-זמני בשתי אפליקציות | צפייה בווידאו תוך ביצוע משימות אחרות | ריבוי משימות על מסכים גדולים |
| פרטי הטמעה | android:resizeableActivity="true" + configChanges |
PictureInPictureParams, RemoteAction |
Freeform אינו דורש הרשאות נוספות, אך דורש בדיקות במצב שולחן עבודה |
עבור מכשירים מתקפלים (Galaxy Z Fold), אנו משתמשים בנוסף ב-WindowLayoutInfo מ-androidx.window:window. הוא עוקב אחר מצב הציר ומתאים את ממשק המשתמש למצב חצי-פתוח או מצב שולחני. ללא ספרייה זו, תמיכה נכונה בלתי אפשרית. הבדיקות שלנו על 5+ דגמים מתקפלים מבטיחות תאימות של 99%.
מה כלול בעבודה
אנו מספקים:
- ביקורת על הקוד הנוכחי לבעיות ריבוי חלונות
- הגדרת המניפסט וטיפול ב-configChanges
- הטמעת ממשק משתמש אדפטיבי (Compose או View)
- אינטגרציית PiP עם RemoteAction
- אינטגרציית גרירה ושחרור בין חלונות
- בדיקות על 5+ מכשירים עם גורמי צורה שונים
- תיעוד השינויים והמלצות לשיפורים נוספים
לוח זמנים: מ-3 עד 7 ימים בהתאם למורכבות ממשק המשתמש. השקעה טיפוסית לשירות זה נעה בין $5,000 ל-$15,000. הערכת פרויקט—צרו קשר במייל או דרך טופס האתר.
פרטים טכניים: WindowManager למכשירים מתקפלים
ספריית androidx.window:window גרסה 1.3.x מספקת WindowInfoTracker, המחזירה Flow<WindowLayoutInfo>. אנו משתמשים בה כדי לזהות מצבים מקופלים/חצי-פתוחים. זה חשוב במיוחד עבור Galaxy Z Fold ומתקפלים אחרים. התעלמות מכך גורמת לאפליקציה לא להגיב לשינויים בזווית הציר ולהיראות תקועה.
הניסיון שלנו עם 5+ פרויקטים למתקפלים וטאבלטים מראה שתמיכה איכותית בריבוי חלונות מגדילה את שימור המשתמשים ב-10–15% (בהתבסס על אנליטיקות פנימיות של לקוחות). אנו משתמשים בסביבה מוסמכת לבדיקות על מכשירים אמיתיים ב-Firebase Test Lab. ראו את התיעוד הרשמי של מפתחי אנדרואיד לפרטים נוספים על תמיכה בריבוי חלונות.
סיכום
אפליקציה מוכנה לריבוי חלונות היא לא מותרות אלא דרישת משתמש באנדרואיד. אנו מגדירים לא רק מסך מפוצל אלא גם PiP, Freeform, והתאמה למסכים מתקפלים. צרו קשר לאבחון פרויקט—נעריך את ההיקף ונציע פתרון מותאם לסט הטכנולוגי שלכם.







