PracticU

זיהוי מובנה של Gesture Detectors

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › זיהוי מובנה של Gesture Detectors
מילון מושגים:
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.

זיהוי מובנה של Gesture Detectors
חישוב ידני של swipe, long press או double tap מ-Touch Events הוא עבודה מעיקה. ההרצאה מראה איך Gesture Detectors עושים את החישובים האלה ומדווחים לקוד איזו מחווה בוצעה.
השלבים העיקריים
1. יצירת האובייקט: משתמשים ב-GestureDetectorCompat. ה-constructor מקבל קונטקסט ואובייקט שיקבל את הדיווחים, ובהדגמה שניהם this.
2. ששת הדיווחים הראשונים: onDown, onShowPress, onSingleTapUp, onScroll, onLongPress ו-onFling. fling הוא תנועת אצבע מהירה מאוד.
3. הצגה בראש הרשימה: כדי שהאירועים החדשים לא ייעלמו למטה, כותבים פונקציה prepend שמוסיפה את הטקסט החדש לפני התוכן הקיים ב-TextView, עם ירידת שורה. כל אירוע מדווח בשמו, ומחזירים true.
4. חיבור לאירועי המגע: הגלאי לא יודע על האירועים עד שמעבירים לו אותם. ב-onTouchEvent של ה-Activity קוראים ל-onTouchEvent שלו עם אובייקט ה-event.
5. אירועי tap נוספים: עם setOnDoubleTapListener מקבלים עוד שלושה: onSingleTapConfirmed, onDoubleTap ו-onDoubleTapEvent. בהדגמה double tap מניב אירוע single tap ואחריו double tap. ההבדלים הקטנים ביניהם מופיעים בתיעוד.
6. זיהוי pinch: משתמשים ב-ScaleGestureDetector עם this, this. שלושת אירועיו הם התחלת scale, scale וסיום scale. גם אליו צריך להעביר את אירוע המגע, אחרת הוא לא עובד.
7. בדיקה: ב-scale צריך שתי אצבעות, ולכן אי אפשר להדגים אותו באמולטור. במכשיר האמיתי רואים התחלה, scale וסיום.
שימו לב
כל אירוע מקבל אובייקט event עם נתונים נוספים, כמו הפעולה והמיקום x ו-y. בהדגמה מציגים רק את שמות האירועים, וכל אחד מחזיר true כי טיפלנו בו.
אחרי ההרצאה אפשר לזהות מחוות בלי לכתוב את החישובים בעצמנו. בהמשך מרחיבים את העקרונות לגרפיקה על המסך.

פרקי ההרצאה: זיהוי מובנה של Gesture Detectors

  1. 00:00

    למה לא לחשב Gestures ידנית

  2. 00:38

    מה עושים רכיבי Gesture Detector

  3. 01:35

    יצירת GestureDetectorCompat

  4. 02:12

    ששת ה-Gestures שהרכיב מדווח

  5. 03:06

    פונקציית prepend להצגת אירועים

  6. 05:03

    העברת אירועי Touch לגלאי

תמלול ההרצאה: זיהוי מובנה של Gesture Detectors

הטקסט המלא של הדקות הראשונות בהרצאה «זיהוי מובנה של Gesture Detectors» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:28

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

  3. 00:41

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

  4. 00:59

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

  5. 01:15

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

  6. 01:33

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

  7. 02:03

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

  8. 02:25

    הוא יגיד לנו תקשיבו זה מה שגיליתי שהוא עשה אל תעשו את החישובים בעצמכם חבל על האפורט שלכם אני כבר אעשה את החישובים ואני אגיד לכם בואו נראה מה יש לנו פה on-down אם המשתמש פשוט ביצע דאון show press single tap app scrolling long press ופלינג כאשר פלינג זה תזוזה מאוד מהירה עם האצבע בואו

  9. 02:51

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

  10. 03:24

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

  11. 04:07

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

  12. 04:52

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

  13. 05:11

    עכשיו איך בעצם הג'שטר דיטקטור הזה יודע מה האירועים שעשינו? עכשיו הוא ממש לא יודע זה סתם אובייקט שהגדרנו והוא בכלל לא קשור לאירועים של האקטיביטי.

  14. 05:27

    אנחנו צריכים לתפוס את אירועי הטאץ', on-touch-event כרגע זה ברמת האקטיביטי ואנחנו צריכים לבוא לג'שטר דיטקטור הזה שלנו ולהגיד לו תקשיב קרה כרגע איזשהו אירוע event בוא תעשה בעצמך את החישובים האלה.

  15. 05:47

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

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: זיהוי מחווה - Swipe Gesture

ההרצאה הבאה: אובייקט Canvas באנדרואיד

הרצאות קשורות מקורסים אחרים

  • עבודה בסיסית עם UITableView - עיצוב מובנה
  • זיהוי חטיפת DLL
  • זיהוי משתמשים - identity awareness - חלק 1
  • עקיפה של זיהוי ROOT ב-UnCrackable3

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון