View的事件分發流程

  如果一個View(eg Button)觸發Touch事件,Touch事件首先會傳入到該View的dispatchTouchEvent()方法裏。

View事件的分發流程圖
dispatchTouchEvent()方法表示是否進行事件分發
返回值: true表示繼續事件分發 ;false表示終止事件分發
onTouch()方法[View源碼的dispatchTouchEvent()裏的第三個if判斷],如下面的截圖:
最後一個與符號li.mOnTouchListener.onTouch(this,event)
該方法表示事件是否被消費
返回值: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章