מסכים מחוברים מרחיבים את חוויית החלונות במחשב לטלפונים רגילים, ומאפשרים למשתמשים לגשת למסכים גדולים מהמכשירים הניידים שלהם. היכולת הזו פותחת אפשרויות חדשות לאינטראקציה עם האפליקציה ולשיפור הפרודוקטיביות של המשתמשים.
כל התכונות הייחודיות של ממשק מחשב חלות על מסכים מחוברים. כשמחברים טלפון למסך, המצב של הטלפון לא משתנה, ומתחילת הפעלה ריקה של ממשק מחשב במסך המחובר. המכשיר והמסך פועלים כשתי מערכות נפרדות, עם אפליקציות ספציפיות לכל מסך.
אם מחברים מכשיר עם ממשק מחשב, כמו טאבלט, למסך חיצוני, סשן המחשב יופיע בשני המסכים. שני המסכים פועלים כמערכת אחת רציפה. ההגדרה הזו מאפשרת להזיז חלונות, תוכן וסמן באופן חופשי בין שני המסכים.
כדי לתמוך בצורה יעילה בצגים מחוברים, צריך לשים לב לכמה היבטים של העיצוב וההטמעה של האפליקציה. השיטות המומלצות הבאות מבטיחות חוויית משתמש חלקה ופרודוקטיבית.
טיפול בשינויים דינמיים בתצוגה
אפליקציות רבות בנויות מתוך הנחה שאובייקט Display והמאפיינים שלו לא ישתנו במהלך מחזור החיים של האפליקציה. עם זאת, כשמשתמש מחבר או מנתק צג חיצוני, או אפילו מעביר חלון של אפליקציה בין צגים, אובייקט Display הבסיסי שמשויך להקשר או לחלון של האפליקציה יכול להשתנות. המאפיינים של המסך, כמו גודל, רזולוציה, קצב רענון, תמיכה ב-HDR וצפיפות, יכולים להיות שונים. אם אתם מקודדים ערכים באופן קשיח על סמך המסך של הטלפון, לדוגמה, הפריסות שלכם כנראה ייפגמו בתצוגה חיצונית.
גם דחיסות הפיקסלים במסכים חיצוניים יכולות להיות שונות מאוד. אתם צריכים לוודא שהאפליקציה מגיבה בצורה נכונה לשינויים בצפיפות. זה כולל שימוש בפיקסלים שלא תלויים בדחיסות (dp) עבור פריסות, מתן משאבים ספציפיים לדחיסות והקפדה על שינוי גודל מתאים של ממשק המשתמש.
אם פעילות פועלת במסך חיצוני כשהמסך מנותק, המערכת מעבירה את הפעילות למסך הראשי. ההעברה מפעילה שינויים בהגדרות – כמו שינויים בגודל המסך ובצפיפות הפיקסלים – שיכולים לגרום ליצירה מחדש של הפעילות. האפליקציה צריכה לטפל בשינוי ההגדרה על ידי שמירה ושחזור של מצב ממשק המשתמש כדי למנוע אובדן נתונים או חוויית משתמש מבלבלת.
שימוש בהקשר הנכון
שימוש בהקשר הנכון הוא חיוני בסביבות עם כמה מסכים. כשניגשים למשאבים, הקשר הפעילות (שמוצג) שונה מהקשר האפליקציה (שלא מוצג).
ההקשר של הפעילות מכיל מידע על התצוגה, והוא תמיד מותאם לאזור התצוגה שבו הפעילות מופיעה. כך תוכלו לקבל את המידע הנכון על צפיפות התצוגה או על מדדי החלון של האפליקציה. תמיד צריך להשתמש בהקשר של הפעילות (או בהקשר אחר שמבוסס על ממשק משתמש) כדי לקבל מידע על החלון או התצוגה הנוכחיים. השינוי הזה משפיע גם על חלק מממשקי ה-API של המערכת שמשתמשים במידע מההקשר.
ב-Jetpack פיתוח נייטיב, אפשר לגשת למידע ספציפי לגבי התצוגה באמצעות אובייקטים של CompositionLocal כמו LocalConfiguration.current ו-LocalDensity.current. כשפעילות או חלון עוברים בין מסכים, ההגדרה של המכשיר משתנה, ומתבצעת יצירה מחדש עם מדדים חדשים של התצוגה. אובייקטים CompositionLocal מאפשרים לממשק המשתמש להסתגל בצורה חלקה.
קבלת מידע על המסך
אפשר להשתמש במחלקה Display כדי לקבל מידע כמו גודל התצוגה, צפיפות או דגלים. משתמשים בשירות המערכת DisplayManager כדי לקבל את המסכים הזמינים. כדי לזהות צגים חיצוניים, מסננים את Display.DEFAULT_DISPLAY, שהוא בדרך כלל המסך המובנה של הטלפון או הטאבלט:
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager val displays = displayManager.getDisplays() // The default display is 0. External displays have other IDs. val externalDisplays = displays.filter { it.displayId != Display.DEFAULT_DISPLAY }
ניהול והגדרה של הפעלת פעילות
כשמשתמשים במסכים מחוברים, אפליקציות יכולות לציין באיזה מסך האפליקציה צריכה לפעול כשהיא מופעלת או כשהיא יוצרת פעילות אחרת. ההתנהגות הזו תלויה במצב ההפעלה של הפעילות שמוגדר בקובץ המניפסט, ובאפשרויות ובדגלי הכוונה שהוגדרו על ידי הישות שמפעילה את הפעילות.
כשפעילות עוברת לתצוגה משנית, האפליקציה עשויה לעבור עדכון של ההקשר, שינוי גודל החלון ושינויים בהגדרות ובמשאבים. אם הפעילות מטפלת בשינוי ההגדרה, היא מקבלת על כך הודעה ב-onConfigurationChanged(). אחרת, הפעילות מופעלת מחדש.
אם מצב ההפעלה שנבחר לפעילות מאפשר כמה מופעים, הפעלה במסך משני יכולה ליצור מופע חדש של הפעילות. שתי הפעילויות יחזרו לפעולה בו-זמנית, וזה יכול להיות שימושי בתרחישים מסוימים של ריבוי משימות.
אפשר להפעיל פעילות במסך מסוים באמצעות ActivityOptions.
שימו לב שנדרשת מערכת Android מגרסה 8 (רמת API 26) ומעלה כדי להשתמש ב-launchDisplayId.
// Get DisplayManager and find the first external display. val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager val externalDisplayId = displayManager.displays .firstOrNull { it.displayId != Display.DEFAULT_DISPLAY } ?.displayId // If an external display is found, launch the activity on it. if (externalDisplayId != null) { val intent = Intent(this, MySecondaryActivity::class.java) val options = ActivityOptions.makeBasic() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { options.launchDisplayId = externalDisplayId } startActivity(intent, options.toBundle()) } else { // Optionally, handle the case where no external display is connected. }
לא להשתמש ברשימות היתרים למכשירים
לפעמים אפליקציות מגבילות את ממשק המשתמש והתכונות שלהן במסכים גדולים למכשירים נבחרים באמצעות
רשימת היתרים או על ידי בדיקה של BUILD.MODEL וגודל התצוגה המובנה.
הגישה הזו לא יעילה לגבי מסכים מחוברים, כי אפשר לחבר כמעט כל מכשיר למסך גדול, ודגם המכשיר לא משתנה כשמחברים מסך חיצוני.
במקום להשתמש ברשימות היתרים או לסמן את BUILD.MODEL ואת גודל התצוגה המובנה, כדאי לבדוק את מדדי החלון או את היכולות של המכשיר בזמן ריצה כדי לקבל החלטות לגבי ממשק המשתמש. כדי ליצור פריסות רספונסיביות ואדפטיביות למסכים בגדלים וצפיפויות שונים, אפשר להשתמש בממשקי ה-API של Jetpack WindowManager או בסיווגים של גודל החלון.
תמיכה בציוד היקפי חיצוני
כשמשתמשים מתחברים למסך חיצוני, הם לרוב יוצרים סביבה שדומה יותר לזו של מחשב. לעתים קרובות זה כולל שימוש במקלדות חיצוניות, בעכברים, בלוחות מגע, במצלמות אינטרנט, במיקרופונים וברמקולים. צריך לוודא שהאפליקציה פועלת בצורה חלקה עם הציוד ההיקפי הזה. התמיכה כוללת טיפול במקשי קיצור, ניהול אינטראקציות של סמן העכבר, תמיכה נכונה במצלמות או במיקרופונים חיצוניים וכיבוד של ניתוב פלט האודיו. מידע נוסף מופיע במאמר בנושא תאימות של קלט במסכים גדולים.
שיפור הפרודוקטיביות של המשתמשים
מסכים מחוברים מספקים הזדמנות משמעותית לשיפור הפרודוקטיביות של המשתמשים. עכשיו יש לכם את הכלים ליצירת אפליקציות לנייד שיכולות לספק חוויה שדומה לזו של אפליקציות למחשב. כדאי להטמיע את התכונות הבאות כדי לשפר את הפרודוקטיביות של המשתמשים:
- לאפשר למשתמשים לפתוח כמה מופעים של אותה אפליקציה. זה שימושי מאוד למשימות כמו השוואת מסמכים, ניהול שיחות שונות או צפייה בכמה קבצים בו-זמנית.
- אפשר למשתמשים לשתף מידע מגוון בתוך האפליקציה ומחוצה לה באמצעות גרירה ושחרור.
- כדי לעזור למשתמשים לשמור על תהליך העבודה שלהם כשמבצעים שינויים בהגדרות, כדאי להטמיע מערכת ניהול מצב חזקה.
ההנחיות האלה ודוגמאות הקוד שמופיעות בהן יעזרו לכם ליצור אפליקציות שמותאמות בצורה חלקה למסכים מחוברים, ויאפשרו למשתמשים ליהנות מחוויה עשירה ופרודוקטיבית יותר.