
GestureDetectorCompat. ה-constructor מקבל קונטקסט ואובייקט שיקבל את הדיווחים, ובהדגמה שניהם this.onDown, onShowPress, onSingleTapUp, onScroll, onLongPress ו-onFling. fling הוא תנועת אצבע מהירה מאוד.prepend שמוסיפה את הטקסט החדש לפני התוכן הקיים ב-TextView, עם ירידת שורה. כל אירוע מדווח בשמו, ומחזירים true.onTouchEvent של ה-Activity קוראים ל-onTouchEvent שלו עם אובייקט ה-event.setOnDoubleTapListener מקבלים עוד שלושה: onSingleTapConfirmed, onDoubleTap ו-onDoubleTapEvent. בהדגמה double tap מניב אירוע single tap ואחריו double tap. ההבדלים הקטנים ביניהם מופיעים בתיעוד.ScaleGestureDetector עם this, this. שלושת אירועיו הם התחלת scale, scale וסיום scale. גם אליו צריך להעביר את אירוע המגע, אחרת הוא לא עובד.true כי טיפלנו בו.הטקסט המלא של הדקות הראשונות בהרצאה «זיהוי מובנה של Gesture Detectors» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסרטון הקודם לקחנו את המידע של הטאץ' איבנטס ועל ידי כל מיני פעולות לוגיות גילינו האם המשתמש ביצע סווייפ אבל כמו שראיתם זה היה די מעיק לבדוק את זה ולהגיע למסקנה האם הוא ביצע לא ביצע ולאיזה כיוון מה יקרה אם אנחנו נרצה לגלות דברים אחרים כמו האם המשתמש ביצע לונג פרס
האם המשתמש ביצע דאבל טאפ זה נקרא לחץ פעמיים ועוד כאלה וכאלה ג'שטרס מחוות, אז היה לנו פה המון עבודה של חישובים בעקבות הטאצ'יבנט האלה.
אז החדשות הטובות הן שאנחנו לא צריכים לבצע את כל החישובים האלה, כי כתבו בשבילנו רכיבים שמסוגלים לעשות את זה. איזה רכיבים אלה? הרכיבים האלה זה רכיבים שנקראים ג'שטר דטקטורס.
הרכיבים האלה מקבלים את אובייקט הטאצ'יבנט, והם בעצמם עושים את החישובים האלה בכדי להגיד לנו אילו ג'שטר התרחשו על ידי המשתמש. אז בואו נראה איך אנחנו יכולים לעבוד איתם.
יש לנו קודם כל את הטקסט-ויו-איבנט הזה שבו אנחנו רוצים לכתוב מה בדיוק המשתמש ביצע אבל אנחנו לא רוצים את האיבנטים הבסיסיים אלא ממש ג'שטרס אמיתיים כמו הסווייפ או דאון או דאבל טאפ וכדומה.
אז מה שאנחנו צריכים זה אובייקט, מסוג ג'שטר דטקטור והנה יש לנו פה ג'שטר דטקטור קומפקט קיצור של קומפטביליטי וניקח אובייקט ממנו נגדיר כאן את הnew שלו ג'שטר דטקטור קומפקט והקונסטרקטור שלו אומר לנו קודם כל מי זה הקונטקסט שלכם זה יהיה דיס ותנו לי איזשהו אובייקט שאני אדווח לכם איזה
ג'שטר גיליתי שהמשתמש עשה גם יהיה דיס כי אנחנו רוצים באמת שהוא יגיד לנו במיין אקטיביטי אילו ג'שטשירס המשתמש עשה שהוא יבצע את החישוב בעצמו ושימו לב שהוא מדווח לנו שישה ג'שטשירס אוטומטית כל אחד מאלה ברגע שהוא יגיע למסקנה שהמשתמש עשה אותו
הוא יגיד לנו תקשיבו זה מה שגיליתי שהוא עשה אל תעשו את החישובים בעצמכם חבל על האפורט שלכם אני כבר אעשה את החישובים ואני אגיד לכם בואו נראה מה יש לנו פה on-down אם המשתמש פשוט ביצע דאון show press single tap app scrolling long press ופלינג כאשר פלינג זה תזוזה מאוד מהירה עם האצבע בואו
נבצע אוקיי ואנחנו רוצים בכל אחד מהם פשוט להציג את זה על הטקסט view אבל מה שאנחנו רוצים לעשות זה להציג את כולם ואנחנו לא רוצים לעשות סתם הפנד כי אם אנחנו נעשה הפנד אז ברגע שיהיו המון המון המון ג'סטרס כאלה שמתרחשים אז בעצם כל הזמן המערכת תכתוב את הג'סטר החדשים למטה באזור התחתון תחתון תחתון תחתון ואנחנו לא נראה את החדשים.
מה שאנחנו רוצים לעשות זה pre-panned להדביק את הג'סטר החדשים למעלה אין לנו פונקציית pre-panned לא שאני יודע עליה אז בואו נבנה פונקציה כזאת בעצמנו פרייבט ווייד פרי פנד שמה שהיא עושה זה פשוט ניגשת לטקסט ויו ומכניסה לתוכו את הטקסט שהיא קיבלה משורשר עם אנטר ועם מה שהיה בטקסט ויו, הנה יש לנו פה את הגט טקסט
אז הפונקציה הפשוטה הזאת פרי פנד היא פשוט תכתוב את האירוע הזה בחלק העליון כל הזמן ואז גם אם נעשה הרבה הרבה הרבה אירועים כאלה אנחנו תמיד נראה את האירועים החדשים למעלה אז בואו פשוט רק נשלח לפריפנד את השם של האירוע אני רק אעתיק את זה אני אדביק את זה בכל אחד מהם ונעתיק פשוט את השמות של האירועים רק בכדי לראות בכל רגע ורגע מה אנחנו בתור יוזרים מבצעים על המסך אבל
מבחינת ג'שטר שהג'שטר דיטקטור גילה לנו. דבר נוסף שאנחנו רוצים לעשות זה לדווח טרו בכל אחד מהם, כל אחד שמחזיר בולם, כי אנחנו כן תפסנו את האירוע הזה וביצענו איזושהי פעולה כתגובה לאירוע.
עכשיו איך בעצם הג'שטר דיטקטור הזה יודע מה האירועים שעשינו? עכשיו הוא ממש לא יודע זה סתם אובייקט שהגדרנו והוא בכלל לא קשור לאירועים של האקטיביטי.
אנחנו צריכים לתפוס את אירועי הטאץ', on-touch-event כרגע זה ברמת האקטיביטי ואנחנו צריכים לבוא לג'שטר דיטקטור הזה שלנו ולהגיד לו תקשיב קרה כרגע איזשהו אירוע event בוא תעשה בעצמך את החישובים האלה.
אז אנחנו צריכים לקרוא ל-OnTouchEvent ולתת לו את אובייקט האיבנט שאנחנו קיבלנו. בואו ניפטר מזה וכעת אנחנו יכולים להריץ ולבדוק.