感謝郭神:http://blog.csdn.net/guolin_blog/article/details/9097463
先總結一下
1.view在執行dispatchTouchEvent的時候先要去判斷該view是否有touchListener和執行TouchListener的onTouch方法的返回值。
2.TouchListener的onTouch方法返回false,事件繼續傳遞在dispatch方法中調用了同級的onTouchEvent方法
3.然後在onTouchEvent方法中的UP事件中判斷是否註冊有onClickListener,有就執行onclick方法。
文章提出的疑問。onTouchListener中返回了false爲什麼還能接收到ACTION_DOWN以外的事件。因爲返回false之後會執行view的onTouchEvent方法。在onTouchEvent方法,只要當前view是可點擊或者長按的都會返回true。