מכשירי XR שמתאימים לשימוש
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
המשנה onIndirectPointerGesture מאפשר לרכיב לקבל אירועים של מצביעים עקיפים ברמה גבוהה ולהגיב להם, כמו אירועים שמקורם בלוח המגע של המכשיר. משתמשים במחרוזת הזו כדי לתעד ולעבד תנועות שמגיעות ממשטח מגע או ממקור דומה.
פלטפורמת ה-API
יש ארבע פונקציות קריאה חוזרת שהאפליקציה יכולה להשתמש בהן כדי לשלוט בטיפול:
-
onClick: מופעל בלחיצה או בהקשה מוצלחת ללא תנועה אופקית משמעותית. onSwipeForward: מופעלת כשהחלקה אופקית חורגת מסף המרחק והמהירות בכיוון קדימה.-
onSwipeBackward: מופעלת כשהחלקה אופקית חורגת מסף המרחק והמהירות בכיוון לאחור. -
Enabled: אם הערך הואfalse, המערכת מתעלמת מהמגביל ולא מופעלות קריאות חוזרות (callback).
התנהגות המערכת בהחלקה ובגלילה
המערכת משתמשת בסף של תנועת החלקה כדי להבדיל בין לחיצה לבין החלקה.
- אם מצביע העכבר זז באופן משמעותי בזמן שהלחצן לחוץ, הפעולה
onClickמבוטלת. - אם מצביעים על משהו ואז חוזרים אחורה באופן משמעותי במהלך התנועה, מחוות ההחלקה נפסלת.
דוגמה: הגדרת טיפול בהחלקות וקליקים ברכיב
הקוד הבא מגדיר טיפול בהחלקות ובלחיצות על רכיב Box שאפשר להתמקד בו:
@Composable @Sampled fun OnIndirectPointerGestureSample() { Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { /* onSwipeForward */ }, onSwipeBackward = { /* onSwipeBackward */ }, onClick = { /* onClick */ }, ) .focusTarget() ) { // App() } }
מידע חשוב על הקוד
onIndirectPointerGestureדורש התמקדות, ולכן גםfocusTargetמוחל כדי לאפשר התמקדות ב-Box. אפשר להשתמש ב-focusTargetאו במקש צירוף אחר להפעלת ההדגשה, כמוsurface. אם אין מיקוד, אי אפשר להשתמש במאפיין הזה כדי להשפיע על אירועים עקיפים של הצבעה.- בדוגמה הזו מיושמים גם קריאות החזרה (callback) של
onSwipeForwardוגם שלonClick, כך שמחוות של החלקה וקליק שמזוהות נחסמות ומועברות, ולא מגיעות אל מחוץ למאגרי התגים של ההורה. עם זאת, אפשר גם להשאיר קריאה חוזרת ספציפית כ-null כדי להעביר תנועת מגע לשינויonIndirectPointerGestureבמאגר נתונים ראשי. -