ב-Android מגרסה 7.0 ואילך, מכשירים יכולים להציג כמה אפליקציות בו-זמנית באמצעות ריבוי חלונות. Android תומך בשלוש הגדרות של ריבוי חלונות:
- בפריסה חופשית: המשתמשים יכולים לשנות את הגודל של חלוניות הפעילות באופן דינמי, ולראות יותר משתי אפליקציות במסך. בממשק מחשב, המשתמשים יכולים ליצור חלונות חופשיים במחשב שמציע אינטראקציות בסגנון מחשב.
- מסך מפוצל: יישום ברירת המחדל של ריבוי חלונות, שבו יש שני חלונות פעילות שבהם המשתמשים יכולים למקם אפליקציות.
- תמונה בתוך תמונה (PiP): מאפשרת למכשירים עם Android להפעיל תוכן וידאו בחלון קטן בזמן שהמשתמש מקיים אינטראקציה עם אפליקציות אחרות.
דרישות לגבי מכשירים עם ריבוי חלונות
התמיכה בריבוי חלונות מופעלת כברירת מחדל ב-Android 7.0 ומעלה.
כדי להשבית את ההגדרה, צריך להגדיר את הדגל config_supportsMultiWindow לערך false בקובץ config.xml במכשיר.
כברירת מחדל, מצב ריבוי חלונות מושבת בכל המכשירים עם זיכרון RAM נמוך (מכשירים שמוצהר בהם ActivityManager.isLowRam). במכשירים עם זיכרון RAM נמוך, המערכת מתעלמת מהערך של הדגל config_supportsMultiWindow.
Freeform
מצב חופשי (חלונות צפים) מאפשר למשתמש ליצור חלונות שאפשר לשנות את הגודל שלהם באופן חופשי. שינוי הגודל והמיקום של החלונות הוא תנאי מוקדם לשימוש בחלונות במחשב. אלו הדרישות להפעלת התכונה 'מצב חופשי' שמאפשרת להזיז, להקטין ולהגדיל חלונות צפים:
-
מפעילים את התכונה הניסיונית
config_supportsMultiWindow. -
מפעילים את ניהול החלונות במצב חופשי באחת מהדרכים הבאות:
-
מפעילים את הדגל
config_freeformWindowManagementב-config.xml:<feature name="android.software.freeform_window_management" /> -
צריך לכלול את השורות הבאות בקובץ ה-Makefile של המכשיר:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml
-
מפעילים את הדגל
ב-Android 16, יצרני ציוד מקורי יכולים לתמוך בממשק מחשב במכשיר שלהם כדי להגדיר חלונות מרובים שניתנים לשינוי גודל ומיקום באמצעות הפעלת ממשק מחשב.
ממשק מחשב
מצב ממשק מחשב מספק סביבת עבודה לריבוי משימות במסכים גדולים, שמבוססת על חלונות חופשיים. סביבת העבודה קיימת לצד המסך המלא, עם התנהגויות וממשק משתמש נוספים שמאפשרים למשתמשים ליהנות מחוויה גמישה יותר של ריבוי משימות:
- אינטראקציה עם המקלדת או העכבר: תומך באינטראקציות שמתבססות על מגע וגם באינטראקציות שמתבססות על מקלדת או עכבר.
- חלונות צפים: אפשר להפעיל אפליקציות בחלונות שניתן לשנות את הגודל שלהם ולהזיז אותם, עם סרגלי כותרת ואמצעי בקרה.
- סרגל משימות משופר: מאפשר גישה קלה לאפליקציות שפועלות ולאפליקציות שמוצמדות.
- אופטימיזציה של מסכים חיצוניים: הופכת מסכים מחוברים לסביבות שולחן עבודה במכשירים נתמכים.
- שולחנות עבודה וירטואליים: מאפשרים למשתמשים לארגן אפליקציות בכמה סביבות עבודה.
כדי להגדיר מכשיר לשימוש בחלונות במחשב, צריך לעמוד בדרישות המוקדמות הבאות:
-
מפעילים את התכונות הניסיוניות הבאות:
- כל הדרישות המוקדמות לשינוי הגודל והמיקום של החלונות
- הדגל הגלובלי של ממשק מחשב
config_isDesktopModeSupported
- ממשק המשתמש של המערכת דורש מסך ברוחב של 600dp לפחות. יכול להיות שממשק המחשב לא יפעל כמצופה במסכים קטנים יותר.
-
המכשיר לא יכול להיות מכשיר עם זיכרון RAM נמוך.
ActivityManager.isLowRamצריך להחזירfalse, כי מכשירים עם זיכרון RAM נמוך לא עומדים בדרישות לשימוש בתכונות של ריבוי חלונות.
בטבלה הבאה מפורטות ההגדרות שבהן אפשר להגדיר מכשיר לשימוש בחלונות בשולחן העבודה, בהתאם לגודל המסך ולאופן השימוש המיועד במכשיר:
| מצב | מכשיר נייד שניתן להציג בו רק במסך מלא | הקרנה ממכשיר נייד למסך מחובר במסך מלא | מסך גדול שמוצג קודם במסך מלא ומתרחב למסך מחובר | ממשק מחשב – מסך גדול |
|---|---|---|---|---|
| דוגמה לגורם צורה | טלפון נייד | טלפון נייד עם תמיכה ב-HDMI למסך חיצוני | טאבלט עם תמיכה ב-HDMI למסך חיצוני | טאבלט עם מקלדת שתומך ב-HDMI לצג חיצוני |
| חוויית השימוש במסך פנימי | תמיכה במסך מלא, במסך מפוצל, ב-PiP ובחלון חופשי שאינו במחשב | תמיכה במסך מלא, במסך מפוצל וב-PiP | ממשק מחשב עם תמיכה במסך מלא, במסך מפוצל ובחלון צף באמצעות שולחנות עבודה וירטואליים נפרדים | מצב ממשק מחשב הוא מצב ברירת המחדל של חלונות (יש תמיכה בשולחנות עבודה נפרדים). המשתמשים יכולים לעבור למצב מסך מלא או למצב מגע של ממשק מחשב דרך שולחנות עבודה נפרדים. |
| חוויה של מסך מחובר | שיקוף של התצוגה הפנימית בלבד | ממשק מחשב רק במסכים מחוברים | תצוגת מחשב מרחיבה את שולחנות העבודה הווירטואליים; זמינה במסכים פנימיים | תצוגת מחשב מרחיבה את שולחנות העבודה הווירטואליים; זמינה במסכים פנימיים |
| הגדרות של קובץ ההגדרה | ||||
config_supportsMultiWindow |
true |
true |
true |
true |
config_freeformWindowManagement |
true |
true |
true |
true |
config_isDesktopModeSupported |
false |
true |
true |
true |
config_canInternalDisplayHostDesktops |
תוצאות שבחרת להתעלם מהן | false |
true |
true |
config_enterDesktopByDefaultOnFreeformDisplay |
תוצאות שבחרת להתעלם מהן | false |
false |
true |
config_isDesktopModeSupported
דגל שכבת העל של ההגדרות config_isDesktopModeSupported הוא הדגל ברמה העליונה להפעלת ממשק מחשב. אם היא לא מופעלת, המערכת מתעלמת מכל שאר הגדרות התצורה.
מגדירים את הערך true ב-config.xml:
<!-- Globally enable Desktop windowing logic -->
<bool name="config_isDesktopModeSupported">true</bool>
כשהערך של config_isDesktopModeSupported הוא true, המערכת מתייחסת אוטומטית למסכים חיצוניים שעומדים בדרישות (כמו מסכים שמחוברים באמצעות DisplayPort או HDMI) כמועמדים להצגת חלונות בממשק מחשב.
התצוגה צריכה להיחשב ככשירה על ידי מנהל החלונות (לפחות ציבורית ומהימנה, ראו ממשק מחשב).
כברירת מחדל, המערכת מנסה להפעיל משימות במצב חלונות צפים במסכים האלה.
config_canInternalDisplayHostDesktops
הדגל של שכבת-העל להגדרות config_canInternalDisplayHostDesktops מאפשר להציג חלונות בשולחן העבודה במסך הפנימי של המכשיר. מגדירים את הערך true ב-config.xml:
<!-- Allow the primary internal display to host desktop sessions -->
<bool name="config_canInternalDisplayHostDesktops">true</bool>ממשק מחשב פועל בצורה הכי טובה במכשיר עם מסך גדול כמו טאבלט, בהשוואה לטלפון קטן יותר שאפשר להחזיק ביד. אם ההגדרה לא מופעלת, יש תמיכה בממשק מחשב רק במסך חיצוני (בהנחה שהמכשיר תומך ב-HDMI).
config_enterDesktopByDefaultOnFreeformDisplay
הדגל של שכבת העל להגדרות config_enterDesktopByDefaultOnFreeformDisplay מגדיר את ממשק המחשב כמצב ברירת המחדל של החלונות בתצוגה הפנימית של המכשיר. אם לא מפעילים את התכונה, מצב החלונות שמוגדר כברירת מחדל הוא מסך מלא, והשולחנות
מתקיימים בו בו-זמנית. מגדירים את הערך true ב-config.xml:
<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
<bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>הפעלת מכסות למשימות
כדי להגדיר את המספר המקסימלי של המשימות שנתמכות בממשק מחשב, מגדירים את דגל שכבת העל של התצורה config_maxDesktopWindowingActiveTasks ב-config.xml למספר המקסימלי של המשימות הנתמכות. כדי לתמוך במספר בלתי מוגבל של משימות, מגדירים את ערך הדגל 0:
<!-- Maximum number of tasks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingActiveTasks">4</integer>הפעלת מגבלות על שולחנות
כדי להגדיר את המספר המקסימלי של שולחנות עבודה וירטואליים שנתמכים בממשק מחשב, מגדירים את דגל שכבת העל של התצורה config_maxDesktopWindowingDesks ב-config.xml למספר המקסימלי של שולחנות העבודה הנתמכים. כדי לתמוך במספר בלתי מוגבל של שולחנות, מגדירים את ערך הדגל ל-0:
<!-- Maximum number of virtual desks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingDesks">4</integer>מסך מפוצל
חוויית ברירת המחדל של ריבוי חלונות היא מצב מסך מפוצל, שבו ממשק המשתמש של המערכת מחולק באמצע המכשיר לאורך או לרוחב. המשתמשים יכולים לשנות את גודל החלון על ידי גרירת הקו המפריד מצד לצד או מלמעלה למטה, בהתאם לכיוון המכשיר.
אחרי שמפעילים את המסך המפוצל, יצרני המכשירים יכולים לבחור להפעיל חלון צף או תמונה בתוך תמונה.
ב-Android מגרסה 8.0 ומעלה, מסך מפוצל משופר על ידי כיווץ של מרכז האפליקציות כשמשתמש מקיש על מסך הבית. פרטים על ההטמעה זמינים במאמר בנושא אינטראקציות במסך מפוצל.
תמונה בתוך תמונה
אחרי שמפעילים את מצב ריבוי החלונות באמצעות הדגל config_supportsMultiWindow, יצרני המכשירים יכולים לתמוך בתמונה בתוך תמונה, שמאפשרת למשתמשים לצפות בסרטון בזמן שהם מבצעים פעילויות אחרות. התכונה הזו מיועדת למכשירי Android TV, אבל יכול להיות שסוגים אחרים של מכשירים תומכים בה.
כדי לתמוך ב-PiP, צריך להפעיל את תכונת המערכת PackageManager#FEATURE_PICTURE_IN_PICTURE ב-/android/frameworks/base/core/java/android/content/pm/PackageManager.java.
לפרטים נוספים על הטמעה של PiP במכשירים עם Android 8.0 ומעלה, אפשר לעיין במאמר בנושא תמונה בתוך תמונה.
ממשק משתמש של המערכת
תמיכה בכל ממשקי המשתמש הסטנדרטיים של המערכת בהתאם לאימות של מצב ריבוי חלונות.
אפליקציות
כדי לתמוך במצב ריבוי חלונות באפליקציות שנטענו מראש, אפשר לעיין במאמר בנושא תמיכה במצב ריבוי חלונות.
אימות
כדי לאמת את ההטמעה של ריבוי חלונות, מריצים את בדיקות ה-CTS שקשורות לכך ופועלים לפי ההוראות במאמר אימות של מצב ריבוי חלונות.