הצעות לפעולה מותאמות אישית

אפליקציות מותאמות תומכות בתצוגות בכל הגדלים: כל מסך המכשיר, ניתן לשנות את הגודל שלו חלונות במצב 'ריבוי חלונות', לאורך ולרוחב, מקופל ותצוגות פתוחות של מכשירים מתקפלים.

רשימה קצרה של הגדרות תצורה וממשקי API מאפשרת לך ליצור באפליקציות. עם זאת, חלק מההגדרות וממשקי ה-API המיושנים לא תואמים לאפליקציות מותאמות וצריך להימנע מהן.

אפשרות סגירה

אפליקציות מותאמות תומכות ביכולת לשנות את האפליקציות ובמצב ריבוי חלונות.

המאפיין resizeableActivity של <activity> וגם רכיבי המניפסט <application> מפעילים או משביתים ריבוי חלונות במצב Android 11 (רמת API 30) ומטה. ב-Android 12 (רמת API 31) וב- מסכים גדולים יותר תומכים במצב ריבוי חלונות, ללא קשר . מידע נוסף זמין במאמר תמיכה במצב ריבוי חלונות.

✓ מומלץ

הפעלת האפליקציה למשתתף בתרחישים של ריבוי חלונות או ריבוי משימות עבור גידול בפרודוקטיביות ובשביעות הרצון של המשתמשים.

צריך להגדיר את הערך resizeableActivity="true" אם האפליקציה מטרגטת רמות API נמוכות מ-24. אחרת, תוכלו לשכוח ממנו – ברירת המחדל היא true ב-Android 7.0 (API רמה 24) ומעלה.

✗ לא

אל תגדירו את resizeableActivity="false" לרמת API כלשהי. אין להחריג את האפליקציה מתרחישים לדוגמה שכוללים מצב 'ריבוי חלונות'.

כיוון

אפליקציות מותאמות תומכות בפריסה לאורך ובפריסה לרוחב, ללא קשר לתצוגה גודל או מצב חלון.

הגדרת המניפסט screenOrientation מגבילה את הכיוון של הפעילות.

✓ מומלץ

מסירים את ההגדרה screenOrientation מקובץ המניפסט של האפליקציה.

נעילת הכיוון של האפליקציות לא מונעת שינויים בגודל החלון. האפליקציות הן שינוי גודל כשהם עוברים למצב ריבוי חלונות, כשהמכשיר מקופל או לא מקופל, או כשמשנים את הגודל של חלון בפריסה גמישה. האפליקציה צריכה לתמוך בשינויים בחלון הזמן גודל, בלי קשר להגדרת המאפיין screenOrientation.

✗ לא

אין להגביל את כיוון הפעילות. אפליקציות שננעלות בפורמט letterbox במכשירים עם מסך גדול ובחלונות בגדלים לא תואמים.

אפליקציות עם פורמט letterbox כפופות ליכולת גילוי נמוכה יותר ב-Google Play עבור טאבלטים, מכשירים מתקפלים ומכשירי ChromeOS.

יחס גובה-רוחב

מאחר שהגדלים של המסך והחלונות משתנים, כך גם יחסי הגובה-רוחב שלהם - גבוהים או צר, לריבוע, קצר ורחב.

הגדרות המניפסט minAspectRatio וmaxAspectRatio מגבילות ביחס הגובה-רוחב של האפליקציה לבין ערכים שכתובים בתוך הקוד.

✓ מומלץ

התאמת האפליקציה לתצוגה ללא קשר למידות היחסיות.

הסרת ההגדרות של minAspectRatio ו-maxAspectRatio מהאפליקציה . צריך גם לוודא שניתן לשנות את גודל האפליקציה ויחס הגובה-רוחב משקף את הבעיה (מידע נוסף מפורט בקטע Resizability).

✗ לא

אל תנסו לשלוט במידות היחסיות של האפליקציה. אם האפליקציה פועלת במסך או בחלון עם יחס גובה-רוחב שאינו תואם את ביחס גובה-רוחב של האפליקציה. האפליקציה מוצגת בפורמט letterbox.

ב-Android מגרסה 14 (רמת API 34) ואילך, המשתמשים יכולים לשנות את יחס הגובה-רוחב של האפליקציה כדי להרחיב אפליקציות עם פורמט letterbox כדי למלא את אזור התצוגה הזמין. להצגת מכשיר מצב תאימות.

גודל החלון

אופטימיזציה של פריסות לגדלים שונים של תצוגה היא הרעיון המרכזי עיצוב דינמי שניתן להתאים. אפליקציות מותאמות מתמקדות בגודל החלון של האפליקציה ולא במכשיר גודל המסך. כשהאפליקציה מוצגת במסך מלא, חלון האפליקציה הוא מסך המכשיר.

סיווגי גודל החלון מספקים דרך שיטתית לקבוע ולסווג אותם לקטגוריות את גודל החלון של האפליקציה. כדי להתאים את האפליקציה, משנים את הפריסה כחלון סיווג הגודל של האפליקציה.

✓ מומלץ

מעריכים את גודל החלון של האפליקציה על סמך סיווגי הגודל של החלונות.

כדי לקבוע את סיווג גודל החלון, משתמשים ברכיב currentWindowAdaptiveInfo() ברמה העליונה של הספרייה 'הוספת חומר' 3 בהתאמה אישית. לקבלת מידע נוסף מידע נוסף מופיע במאמר יצירת אפליקציות מותאמות.

✗ לא

אסור להתעלם מהתועלת של ההגדרות של סיווג גודל החלון, ממשקי API מובנים. אין להשתמש בממשקי API שהוצאו משימוש כדי לחשב את גודל החלון.

ממשקי API שהוצאו משימוש

ממשקי API של פלטפורמות ישנות יותר לא מודדים בצורה נכונה את חלון האפליקציה. מודדים את מסך המכשיר, חלקם לא כוללים את עיצוב המערכת.

✓ מומלץ

שימוש ב-WindowManager#getCurrentWindowMetrics() וב- WindowMetrics#getBounds() כדי לראות את גודל החלון של האפליקציה. כדאי להשתמש WindowMetrics#getDensity() כדי לקבל את צפיפות התצוגה.

✗ לא

אין להשתמש בממשקי ה-API הבאים מסוג Display שהוצאו משימוש כדי לקבוע את גודל החלון:

  • getSize(): הוצאה משימוש ב-Android 11 (רמת API 30)
  • getMetrics(): הוצאה משימוש ב-Android 11 (רמת API 30)
  • getRealSize(): הוצאה משימוש ב-Android 12 (רמת API 31)
  • getRealMetrics(): הוצאה משימוש ב-Android 12 (רמת API 31)

פיתוח נייטיב

'Jetpack פיתוח נייטיב' מיועד לפיתוח גמיש של ממשק משתמש. אין XML, אין פריסה קבצים מסוימים, ללא מגדירי משאבים. רק תכנים קומפוזביליים ללא שמירת מצב וללא שמירת מצב Column, Row ו-Box שמתארים את ממשק המשתמש ואת מקשי הצירוף כמו offset, padding או size שמוסיף התנהגות לממשק המשתמש. רכיבים.

✓ מומלץ

פיתוח באמצעות 'כתיבה'. קבלת עדכונים על תכונות חדשות וגרסאות חדשות.

✗ לא

אין להסתמך על טכנולוגיה מיושנת. אל תאפשרו לאפליקציה להפוך למיושנת.

יצירת ספרייה מותאמת של Material 3

הספרייה Adaptive Material 3 מספקת רכיבים וממשקי API שמסייעות בפיתוח של אפליקציות מותאמות.

✓ מומלץ

תוכלו להשתמש בממשקי ה-API הבאים כדי להתאים את האפליקציה שלכם:

  • NavigationSuiteScaffold: מעבר בין סרגל הניווט לבין רכבת ניווט, בהתאם לסיווג הגודל של חלון האפליקציה.
  • ListDetailPaneScaffold: הטמעת הפריסה הקנונית של הרשימה עם הפרטים. התאמת הפריסה לגודל החלון של האפליקציה.
  • SupportingPaneScaffold: הטמעה של החלונית התומכת כקנונית הפריסה שלו.
✗ לא

אל תמציאו את הגלגל מחדש. לא כדאי לפספס את השיפורים בפרודוקטיביות של המפתחים סופקו על ידי כל ספריות Jetpack Compose.

פריסות

המשתמשים מצפים שאפליקציות יפיקו את המרב משטח התצוגה הזמין עם תוכן או פקדים משופרים.

אפליקציות מותאמות מבצעות אופטימיזציה של הפריסות על סמך שינויים במסך, באופן ספציפי, שינויים בגודל חלון האפליקציה או שינויים במצב המכשיר.

✓ מומלץ

שינוי הרכיבים בממשק המשתמש כשגודל החלון משתנה כדי לנצל את היתרונות של הרכיבים הזמינים שטח תצוגה. לדוגמה, החלפת סרגל הניווט התחתון שנמצא בשימוש במצב קומפקטי גודלי חלונות עבור רכבת ניווט אנכית בחלונות בינוניים ומורחבים. אפשר למקם מחדש את תיבות הדו-שיח כדי שאפשר יהיה לגשת אליהן בכל המסכים.

לארגן תוכן בחלוניות כדי להפעיל פריסות מרובות חלוניות כמו list-detail וחלונית תומכת בתצוגות של תוכן דינמי.

✓ מה צריך לעשות: הצגת רשימה של פעילויות ופרטיות שמאורגנים בפריסה של שתי חלוניות.
✗ לא

אם אתם לא משתמשים בחלוניות תוכן, לא כדאי רק למתוח רכיבים של ממשק המשתמש כדי שימלאו את הטופס שטח תצוגה זמין. קשה לקרוא שורות ארוכות של טקסט. מתוח שהלחצנים לא נראים טוב. אם משתמשים ב-Modifier.fillMaxWidth, אין מניחים שזו ההתנהגות הנכונה לכל גדלי התצוגה.

✗ לא: הפריסה נמתחת כדי למלא את החלון המתרחב.

התקני קלט

המשתמשים לא משתמשים רק במסכי מגע כדי לקיים אינטראקציה עם אפליקציות.

אפליקציות מותאמות תומכות במקלדות, בעכברים ובסטיילוסים חיצוניים כדי לספק חוויית משתמש משופרת ולעזור למשתמשים להיות פרודוקטיביים יותר בהתאם לגורמי צורה של מכל הסוגים.

✓ מומלץ

לנצל את הפונקציונליות המובנית של framework של Android בשביל ניווט בכרטיסיות במקלדת ולחיצה על העכבר או משטח המגע, בחירה וגלילה. פרסום במקשי הקיצור של האפליקציה שלכם בכלי העזרה למקשי קיצור.

תוכלו להשתמש בספריית Material 3 של Jetpack כדי לאפשר למשתמשים לכתוב בכל רכיב TextField באמצעות סטיילוס.

✗ לא

אל תאפשרו להשתמש בשיטות קלט חלופיות. לא להוסיף נגישות בעיות נפוצות.

סיכום

  • אפשר לבנות את האפליקציה שלך באמצעות 'כתיבה' ו'הספרייה המותאמת של Material 3'
  • פריסות בסיסיות על סיווגי גודל של חלונות
  • יצירת פריסות מרובות חלוניות
  • איך אפשר לקבוע את גודל האפליקציה
  • אף פעם לא לנעול את הכיוון של הפעילות
  • ללא הגבלה של יחס הגובה-רוחב
  • תמיכה בקלט שאינו מגע
  • הימנעות מממשקי API שהוצאו משימוש

עושים את מה שהמשתמשים מצפים לקבל: לבצע אופטימיזציה של האפליקציה שלכם למגוון המכשירים שאנשים מסתמכים עליהם מדי יום.

✗ לא לחכות. כדאי להתחיל כבר היום!