
PointF, שמחזיקים x ו-y כ-float. p1 היא נקודת הנגיעה ו-p2 נקודת העזיבה.onTouchEvent עושים switch על event.getAction(). ב-ACTION_DOWN שומרים ב-p1 נקודה חדשה מ-getX ו-getY. ב-ACTION_UP שומרים את p2 וקוראים לפונקציה showSwipeData.deltaX ו-deltaY כערך מוחלט של ההפרש בין הנקודות. מהירות האצבע לא נבדקת, והחשוב הוא המרחק.private final static float MIN_SWIPE_DISTANCE עם הערך 100, ולא מספר קבוע בקוד. נגיעה קצרה או תזוזה קטנה מאוד לא נחשבות swipe.deltaX גדול מהמינימום, בודקים אם ה-x של p1 גדול מה-x של p2. אם כן, ההודעה היא "you swipe left", ואחרת "you swipe right".deltaY גדול מהמינימום, משווים באותה דרך את ערכי ה-y. אם y של p1 גדול מזה של p2 זה כלפי מעלה, ואחרת "down". אפשר להגיע גם לשני כיוונים יחד, כמו right ו-down.הטקסט המלא של הדקות הראשונות בהרצאה «זיהוי מחווה - Swipe Gesture» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שהצלחנו לגלות אילו אירועי טאץ' בסיסיים היוזר ביצע על המסך, בואו נתרגם אותם למשהו שנקרא מחווה או ג'סטר.
והג'סטר שאנחנו רוצים לגלות זה סווייפ. זאת אומרת, לא רק האם היוזר ביצע דאון או אפ או מוב, אלא באמת האם הוא ביצע סווייפ. סווייפ זה בעצם תזוזה מהירה של האצבע על המכשיר, ולא סתם לחיצה או עזיבה, זאת אומרת שצריך לעבור גרירה של מרחק מסוים.
אז יש לנו כאן את האפליקציה שאנחנו רושמים את האירועים על ה-Activity, הורדתי את התמונה כרגע, וה-Main Activity ריקה, יש לנו פה רק את ה-Text View בכדי להציג מה בעצם היוזר מבצע מבחינת Swipe.
אז איך אנחנו רוצים לעשות את זה? מה שאנחנו רוצים לעשות זה מתי היוזר ביצע לחיצה ומתי היוזר ביצע עזיבה ולמדוד את המרחק שהיה בין הלחיצה לבין העזיבה.
כרגע נתעלם מהמהירות, אפילו שזה איטי או אפילו שזה מהיר עדיין מבחינתנו ביצע סווייפ. לצורך כך אנחנו רוצים שיהיה לנו איזה שהם משתנים מסוג פוינט.
אז יש לנו פוינט או פוינט F. פוינט F מאפשר לנו נקבל את ה-X או ה-Y כפלוט. אז בואו ניקח פוינט F ונקרא לזה פוינט 1, נקרא לזה P1 האמת, והנה יש לנו P2, ויש לנו עכשיו את שתי הנקודות, P1 זה עבור הלחיצה, P2 זה עבור העזיבה.
אנחנו רוצים להירשם לאירוע של קבלת ה-Touch Events, זה היה ברמת ה-Activity on Touch Event, ומה שאנחנו רוצים לעשות, בואו נחזיר false בסוף, זה switch על event get action בכדי לדעת מהם ה-touch הבסיסיים שהתבצעו.
כאשר אנחנו נמצאים ב-motion event.action down, זה אומר שהיוזר רק לחץ "אנחנו רוצים לגשת ל-p1" ולבנות אובייקט point f חדש ולתת לו את get x ואת get y, אז יש לנו את הנקודה שבה משתמש לחץ.
בואו נחזיר טור. ניקח את כל הסיפור הזה, נעתיק, נדביק ונירשם או נגלה את Action App. ברגע שהיוזר עוזב אנחנו רוצים לקחת את הנקודה שהוא עזב בה לפי שתיים אבל אז אנחנו רוצים גם לגלות מה בעצם קרה בנקודה הזאת האם בעצם היה סווייפ או שהוא רק נגע ועזב
או שהוא רק נגע וזז ממש ממש ממש קצת, וזה ממש לא נקרא סווייפ מבחינתנו. אז בואו נקרא לפונקציה שאנחנו הולכים לכתוב, ונקרא לה showSwipeData. אנחנו רוצים לבנות אותה private void, הנה הפונקציה שלנו, ואנחנו רוצים לקרוא לה רק בעזיבה, רק שהיוזר עוזב, בואו נראה מה בעצם קרה כרגע.
יש לנו את שתי הנקודות, וכל מה שאנחנו צריכים לעשות זה לבדוק מה הערכים שלהם. קודם כל בואו ניגש לטקסט view event וננקה אותו מהדפסות קודמות.
לאחר מכן אנחנו רוצים לקבל מה המרווח של ה-Xים ומה המרווח של ה-Yים. אז בואו ניקח דלתא X, כן, דלתא זה ההפרש של ה-Xים, וזה מתבצע על ידי math.absolute של p1x פחות p2x. מה זה אומר?
זה אומר שאנחנו גילינו מה המרווחים בxים, שזה יכול להיות 0 וזה יכול להיות יותר. בואו נשכפל את כל הסיפור הזה לדלתא y וניקח את p1y פחות p2y ויש לנו עכשיו את הדלתות, כל אחד מהם יכול להיות 0 או יותר ואף אנחנו רוצים לבדוק.
מידה ודלתא X יותר גדול מאיזשהו מינימום שאנחנו שמים לעצמנו.