אחד מהתרחישים הבסיסיים ביותר של משוב פיזי הוא לתת משוב למשתמש האינטראקציות. כלים לבחירת שעה, הקשה על המקש במקלדת וירטואלית וטקסט בחירה הן דוגמאות נפוצות לתרחישים לדוגמה טובים לשליחת משוב פיזי. לקבלת מידע נוסף מתי ואיך להחיל משוב פיזי, עקרונות לעיצוב פיזי.
בדף הזה מתוארות שלוש דרכים לספק משוב פיזי.
- משתמשים ב-
View
(מומלץ). הגישה הזו ממוקדת בפעולה, מקבל את התמיכה הרחבה ביותר, ולא צריך את ההרשאהVIBRATE
. - צריך להשתמש ב-
VibrationEffect
שהוגדר מראש. לגישה הזו יש יותר גמישות, אבל יש לה כמה יתרונות. - משתמשים בקומפוזיציות מתקדמות עם פרימיטיבים. הזה השיטה הזו חדשה יותר וגמישה עוד יותר, אבל היא דורשת מכשיר ספציפי תמיכה.
בשיטות האלה נעשה שימוש בפרימיטיבים שמוגדרים ברמת המכשיר כדי לספק איכות גבוהה שמותאם למכשיר שבידכם.
כל השיטות למשוב הפיזי מכבדות את הגדרות משוב המגע של המשתמש על ידי כברירת מחדל.
שימוש ברכיבי View
כדי ליצור משוב פיזי
משתמשים בשיטה View.performHapticFeedback
כדי ליצור משוב פיזי.
קבועים פיזיים שמוגדרים על ידי HapticFeedbackConstants
מתמקדים
הפונקציונליות באפליקציה, ולא סוג האפקט הפיזי המבוצע.
ההטמעה הבסיסית עשויה להשתנות בהתאם למכשיר ולחומרה יכולות, אבל האפליקציה צריכה לקחת בחשבון רק את סוג המשוב כדי לספק בהקשר מסוים. באמצעות התמקדות בפונקציונליות, תוכלו להפעיל את המשוב הפיזי משוב על אינטראקציות דומות. המשתמשים לומדים לשייך משמעויות שונות לתחושות הפיזיות שונות לאורך זמן.
דרישות מוקדמות: הפעלת משוב פיזי
כל עוד ניתן לראות את View
, אפשר להשתמש במשוב הפיזי כדי לתעד את האירועים שבו.
אירועים מסוימים, כמו לחיצה ארוכה, כוללים משוב פיזי כברירת מחדל שמופעל אם
המאזין בתצוגה מטפל באירוע (מחזיר true
).
View
Android יכול להשבית את המשוב הפיזי על ידי הגדרה של
נכס View.hapticFeedbackEnabled
אל false
. השבתת הנכס הזה
יובילו למשוב ברירת המחדל.
גם בשיטה performHapticFeedback
אפשר להשתמש בהגדרת המערכת
HAPTIC_FEEDBACK_ENABLED
, וכך המשתמש יכול להשבית אותן באופן פוטנציאלי
לכל המערכת.
בניגוד לממשקי API פיזיים אחרים, שימוש ב-HapticFeedbackConstants
עם View
לא מחייבת את ההרשאה VIBRATE
.
בחירת HapticFeedbackConstant
כשמשתמשים ברכיבי View
עם HapticFeedbackConstants
, אין צורך
כדי להעריך תמיכה ספציפית במכשיר, מכיוון שלקבועים האלה יהיו
התנהגות המשתמשים במקרה הצורך. השיקול היחיד הוא רמת ה-SDK של הנכס
באופן קבוע.
דוגמה 1: הקשה על מקשים
זוהי דוגמה להוספת משוב פיזי לקלט מגע ב-View
באמצעות מאזיני מגע. האפקטים מדמים את התחושה של לחיצה על
ואז משחררים אותו.
Kotlin
class HapticTouchListener : View.OnTouchListener { override fun onTouch(View view, MotionEvent event) : Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) MotionEvent.ACTION_UP -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE) } return true } }
Java
class HapticTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); break; case MotionEvent.ACTION_UP: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE); break; } return true; } }
דוגמה 2: לחצן שליחה
תרחישים לדוגמה של משוב פיזי הם מעבר להדמיה של אינטראקציה פיזית עם
במכשיר. אפשר להשתמש בהם גם כדי להעביר משמעות מופשטת. לדוגמה,
הציפייה הכללית
האפקט CONFIRM
הוא
רטט קצר וקל,
REJECT
יכול להיות
משוב חזק יותר לציון כשל. אפשר לראות זאת באופן הבא:
דוגמה למשוב על לחצן השליחה.
Kotlin
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
Java
submitButton.setOnClickListener(view -> { boolean successful = performSubmit(); if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM); } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT); } });
צריך להשתמש ב-VibrationEffect
שהוגדר מראש כדי ליצור משוב פיזי
השימוש בגישה המבוססת על View
מתמקד באינטראקציה של המשתמשים. זה כן
לעקביות בכל המערכת. עם זאת, שיטות ספציפיות
אפשר גם להפעיל את VibrationEffect
ממשקי API כדי לקבל משוב פיזי מותאם אישית
באפקטים מיוחדים.
אפקטים מוגדרים מראש זמינים בתור VibrationEffect
קבועים, ויכולים להיות
בדקתי את הנושא ושיחק עם השירות Vibrator
כפי שמוצג
בדוגמאות הבאות.
מידע על התמיכה של VibrationEffect
בממשקי API במכשירים
בשימוש בסיסי, לא צריך לבדוק אם יש תמיכה באנשים פרטיים
ממשקי API של VibrationEffect
. ממשקי API כמו Vibrator.areEffectsSupported
ו-Vibrator.areAllEffectsSupported
משמשים כדי לקבוע אם המכשיר כולל
יישום מותאם אישית של הקבוע. אם אפקט מותאם אישית לא מופיע
כיום, האפליקציה עדיין יכולה להפעיל את האפקטים ולהשתמש בפלטפורמה
של חזרה למצב ראשוני.
לפרטים נוספים, ראו קמפיינים שהוגדרו מראש
VibrationEffect
דרישות מוקדמות: יש לטעון את הרטט ואת ההרשאה VIBRATE
אפשר להפעיל את רוב הרטט באמצעות השירות Vibrator
, שאותו אפשר לטעון
ככה:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
האפליקציה צריכה את הקטע
הרשאה ל-VIBRATE
לפי הסדר
לרטט את המכשיר באמצעות השירות הזה. אפשר להוסיף את ההרשאה אל
קובץ מניפסט של אפליקציה:
<uses-permission android:name="android.permission.VIBRATE"/>
הפעלת VibrationEffect
שהוגדר מראש
אפשר להכין אפקטים מוגדרים מראש בעזרת VibrationEffect.createPredefined
,
לאחר מכן שיחקת באחת מהשיטות של vibrate
ב-Vibrator
.
בדוגמה הזו פועל אפקט של קליק.
Kotlin
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
Java
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
השתמשו בקומפוזיציות מתקדמות עם יסודות
ב-API של VibrationEffect.Composition
יש אפשרויות נוספות לביצוע
משוב פיזי. עם זאת, בשונה מאפקטים, לפרימיטיביים האלה
חלופות ברמת המערכת, כלומר צריך להקדיש תשומת לב רבה
את הרכיבים הבסיסיים ויכולות אחרות שנתמכות על ידי המכשיר.
השימוש בממשקי ה-API האלה מתואר בפירוט יצירת אפקטים קוליים בהתאמה אישית