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

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

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

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

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

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

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

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

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

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

התנועה החדשה במערכת לחזרה היא החלקה פנימה מהקצה השמאלי או הימני של המסך. הדבר עלול להפריע לרכיבי הניווט באפליקציה באזורים האלה. כדי לשמור על הפונקציונליות של רכיבים בקצוות הימני והשמאלי של המסך, אפשר להשבית את תנועת החזרה באופן סלקטיבי על ידי ציון האזורים במערכת שצריכים לקבל קלט מגע. כדי לעשות זאת, אתם יכולים להעביר List<Rect> אל View.setSystemGestureExclusionRects() API שהוצג ב-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(), שמודיע לאפליקציות על ספי הזיהוי של מגע.

משחקים ואפליקציות אחרות שאינן אפליקציות של View

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

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

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

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

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

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

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

פוסטים בבלוג

סרטונים