如果一個View(eg Button)觸發Touch事件,Touch事件首先會傳入到該View的dispatchTouchEvent()方法裏。
dispatchTouchEvent()方法表示是否進行事件分發
返回值: true表示繼續事件分發 ;false表示終止事件分發
onTouch()方法[View源碼的dispatchTouchEvent()裏的第三個if判斷],如下面的截圖:
該方法表示事件是否被消費
返回值:true表示事件已經被消費; false表示事件未消費
onTouchEvent()方法主要處理點擊事件onClick()方法
言外之意
從上面的事件分發流程圖可以得到的信息:
onTouch()方法先於onClick()方法執行,如果將onTouch()方法的返回值改爲true,那麼onClick()方法就不會執行。
總結
簡單的說View處理Touch事件的總體流程:
dispatchTouchEvent()—>OnTouchListener.OnTouch()—>onTouchEvent()—>onClick()
## 參考 ##
http://blog.csdn.net/guolin_blog/article/details/9097463
http://blog.csdn.net/lfdfhl/article/details/51559847