«

»

Oct 23

Touch Listener ל View


Touch Listener ל View:

 

 

רקע תאורטי:

 

לכל View באנדרואיד יש יכולת להתמודד עם ארועים של נגיעה של המשתמש ב Vie
w. המתודה שנקראת במצב זה היא onTouchEvent ולכן אם אנו רוצים ליצור View משלנו עם התנהגות ספציפית כאשר המשתמש נוגע ב view נדרוס את המתודה הזאת.

 

בשביל לשלוט באירועים של נגיעה ב View או בשביל Layout או כל אובייקט אחר שיורש מ View שלא אנחנו יצרנו. אפשר ליצור מחלקה שמממשת את הממשק View.OnTouchListener ואז ב View עצמו לעשות setOnTouchListener למופע של המחלקה שיצרנו.

 

אפשר לעשות setOnTouchListener ל View שאנחנו יצרנו שמימשנו לו את המתודה onTouchEvent. במקרה הזה תקרא המתודה onTouch במופע של המחלקה ואם נחזיר true זה אומר שטיפלנו באירוע הנגיעה ולא תקרא מתודת ה onTouchEvent של ה View. אם נחזיר false אז תקרא מתודת ה onTouch של ה View.

 

מתודת ה onTouchEvent ו onTouch מקבלות פרמטר: MotionEvent שמציג את סוג ה event שנתפס.

 

ישנם כמה Events מרכזיים:

 

ACTION_DOWN – כאשר המשתמש מניח את האצבע הראשונה על ה View.
ACTION_POINTER_DOWN – כאשר המשתמש מניח את האצבע השנייה (או שלישית או יותר) על ה View (כאשר יש לו כבר אצבע מונחת על ה View)
ACTION_POINTER_UP – כאשר הוא מרים את האצבע השנייה (או שלישית או יותר) מה View
ACTION_UP – כאשר הוא מרים את האצבע מה View (ויש לו רק אצבע אחת ב View)
ACTION_MOVE – כאשר הוא מזיז את האצבע ב View.
אפשר לממש את המחלקה שלך שתזהה מופע של swipe לדוגמה ע”י שימוש ב event האלה.
דוגמא והסבר:

 

הגדרת View משלנו שנדרוס בו את מתודת ה onTouch:
public class MyCustomView extends TextView {

	@Override
	public boolean onTouchEvent(MotionEvent event) {

		Log.d("Text", "Lior: MyCustomView: onTouchEvent");
		Toast.makeText(_context, "MyCustomView: onTouchEvent", Toast.LENGTH_SHORT).show();
		setText("MyCustomView: onTouchEvent");
		return super.onTouchEvent(event);

	}

 

הגדרת מחלקה שתטפל באירואי נגיעה:

	private class SwipeDetectOnTouchListener implements View.OnTouchListener {

 

הגדרה שהמופע של המחלקה הזאת יאזין לארועי נגיעה ב view שלנו:

myCustomView.setOnTouchListener(swipeDetectOnTouchListener);

 

בדוגמאות הקוד יש דוגמא לאיך מזהים תנועה של Swipe.

 

לינק להורדת הפרויקט לדוגמה

 

בהצלחה !

Leave a Reply

Your email address will not be published.

אתם יכולים להשתמש באפשרויות ותגי ה-HTMLהבאים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>