תאימות לניווט באמצעות תנועות

החל מ-Android 10 (רמת API‏ 29), מערכת Android תומכת בניווט שמבוסס כולו על תנועות. כדי לוודא שהאפליקציות שלהם תואמות לתכונה הזו, מפתחי אפליקציות צריכים לבצע שתי פעולות:

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

בנוסף, ב-Android 13 (רמת API ‏33) יש חיזוי תנועת החזרה למכשירי Android כמו טלפונים, מסכים גדולים ומכשירים מתקפלים, כחלק מגרסה רב-שנתית. מפתחי אפליקציות יכולים לבצע פעולות כדי לוודא שהאפליקציות שלהם תומכות בחיזוי תנועת החזרה.

הצגת תוכן האפליקציה מקצה לקצה

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

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

טיפול בתנועות מתנגשות באפליקציות

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

התנגשות עם תנועות החזרה

התנועה החדשה במערכת לחזרה אחורה היא החלקה פנימה מהקצה השמאלי או הימני של המסך. זה עלול להפריע לרכיבי הניווט של האפליקציה באזורים האלה. כדי לשמור על הפונקציונליות של הרכיבים בקצוות השמאלי והימני של המסך, אתם יכולים לבטל את תנועת החזרה באופן סלקטיבי על ידי ציון האזורים שצריכים לקבל קלט מגע למערכת. כדי לעשות את זה, אתם יכולים להעביר List<Rect> ל-API‏ View.setSystemGestureExclusionRects() שהושק ב-Android 10. השיטה הזו זמינה גם ב-ViewCompat החל מ-androidx.core:core:1.1.0-dev01.

לדוגמה:

Kotlin

var exclusionRects = listOf(rect1, rect2, rect3)

fun onLayout(
        changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

fun onDraw(canvas: Canvas) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

Java

List<Rect> exclusionRects;

public void onLayout(
        boolean changedCanvas, int left, int top, int right, int bottom) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

public void onDraw(Canvas canvas) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

התנגשויות עם תנועות למעבר למסך הבית או למעבר מהיר

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

כדי לצמצם את הבעיה, ב-Android 10 הוספנו את ה-API‏ WindowInsets.getMandatorySystemGestureInsets(), שמעדכן את האפליקציות לגבי ערכי הסף לזיהוי מגע.

משחקים ואפליקציות אחרות שלא מבוססות על תצוגה

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

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

עדכון האפליקציה כדי לתמוך בחיזוי תנועת החזרה

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

פרטים נוספים זמינים במאמר הוספת תמיכה בחיזוי תנועת החזרה.

מקורות מידע נוספים

מידע נוסף על ניווט באמצעות תנועות זמין במאמרים הבאים:

פוסטים בבלוגים

סרטונים