一、什麼是MotionEvent?對象
當用戶觸摸屏幕時,將建立一個MotionEvent對象。MotionEvent包含關於發生觸摸的位置和時間等細節信息。MotionEvent對象被傳遞到程序中合適的方法,好比View對象的onTouchEvent()方法中。MotionEvent對象是與用於觸摸相關的時間序列,該序列從用戶首次觸摸屏幕開始,經歷手指在屏幕表面的任何移動,直到手指離開屏幕時結束。移動過程當中會產生大量事件,每一個事件都會產生對應的MotionEvent對象,來記錄發生的操做、觸摸的位置、使用多大的壓力、觸摸的面積、發生的時間等相關信息。接口
二、什麼狀況下會建立MotionEvent對象?事件
手指在如下狀況會建立MotionEvent對象:io
1)初次觸摸(ACTION_DOWN操做)List
2)滑動(ACTION_MOVE操做)程序
3)擡起(ACTION_UP操做)方法
三、MotionEvent對象的監聽方式?移動
有兩種監聽事件的方式。時間
1)委託式回調
將事件委託給監聽器去處理。實現View.onTouchListener接口,其中有onTouch()方法。onTouch()方法中有兩個參數:MotionEvent和View。由於監聽器能夠監聽多個View控件的事件。
2)回調式
重寫View類的onTouchEvent()方法,即控件本身處理事件。onTouchEvent()方法接收一個參數:MotionEvent。
以上兩種監聽事件的方式onTouch()和onTouchEvent()方法返回值都是boolean類型。
true:表示當前處理程序處理完該事件後再也不傳播給其餘控件;
false:表示對此觸摸序列相關的任何將來事件都不感興趣。
例子:
若是Button的onTouchEvent方法想要處理用戶的一次點擊,則會有兩個個事件產生ACTION_DOWN和ACTION_UP,按道理這兩個事件都會調用onTouchEvent方法,若是方法返回false,則在按下時你能夠作一些操做,可是手指擡起時你將不能再接收到MotionEvent對象了,因此你也就無從處理擡起事件了。