view點擊事件流程

全文參考https://blog.csdn.net/carson_ho/article/details/54136311 ,只是自己理解整理一次,加深印象

點擊事件相關的四個方法

控件的onTouch方法,這個方法和onTouchEvent不是同一個,要注意區(qū)別
如果onTouch方法return true,那么會走dispatchTouchEvent,不會走自己的onTouchEvent方法,也就不會響應點擊事件
如果onTouch方法 返回 false,會執(zhí)行onTouchEvent 之后點擊事件也會正常執(zhí)行,默認就是false
onTouch在onTouchEvent之前執(zhí)行
image

dispatchTouchEvent() 事件分發(fā)

當按下那一刻,事件會通過dispatchTouchEvent分發(fā)
如果直接設置return true,會調用activity.dispatchTouchEvent(),父布局的onInterceptTouchEvent()也會走,但是不會走父布局的onTouchEvent
如果直接設置return false,會調用父布局的所有流程
無論返回是否true,還是false,都不會走自己的onTouchEvent事件
image

onTouchEvent 事件處理

無論自己設置為return false,或者return true,都不會走自己的onClick,除非是默認,因為不會調用performClick()方法,自己直接設置也可以
如果直接return false,那么就會返回給父布局的onTouchEvent
如果為true那么自己會直接消費掉事件,子控件的點擊事件還是會走,并不會影響子控件

onInterceptTouchEvent 事件攔截

只有ViewGroup有,攔截點擊事件,在自己onTouch之前執(zhí)行,如果為true,調用自己dispatchTouchEvent,onTouch,onTouchEvent 正常流程處理事件,不會傳遞到子view
image

完整的流程圖

image
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容