dispatchTouchEvent事件分發(fā)淺析(三)點(diǎn)擊執(zhí)行順序

上一篇,我們大體理解了分發(fā)的過程
理解了在 dispatchTouchEvent 和 onTouchEvent 的過程中 對應(yīng)的順序
還有 View 和 ViewGroup 的區(qū)別

具體代碼可以見https://github.com/2954722256/demo_event


這里 我們給上一篇的2個(gè)例子,
只是在MainActivity中,
分別給2個(gè)控件, 添加上OnClick 和 OnTouch 事件

【EventButton】


Paste_Image.png

點(diǎn)擊 自定義的EventButton
可以發(fā)現(xiàn)對應(yīng)的過程

MainActivity    ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
EventButton ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
MainActivity    ----    btn setOnTouchListener  onTouch ---->   ACTION_DOWN ---->   noMsg
EventButton ----    onTouchEvent    ---->   ACTION_DOWN ---->   noMsg
MainActivity    ----    btn setOnClickListener  onClick ---->   nullEvent   ---->   noMsg

我們可以發(fā)現(xiàn),和前面一樣
從MainActivity分發(fā)下來事件
只是 先觸發(fā) OnTouch 的事件(對外的,對開發(fā)者的), 再 獲取到OnTouchEvent事件(系統(tǒng)的,消費(fèi)) , 再觸發(fā) OnClick 事件

我們可以理解成, 點(diǎn)擊事件從最外層分發(fā)下來, 先觸發(fā) TouchListener回調(diào)接口, 系統(tǒng)獲得處理OnTouch事件, 判斷是否消費(fèi), 判斷是Click事件, 再觸發(fā) ClickListener回調(diào)接口


【EventViewGroup】:

Paste_Image.png

點(diǎn)擊 自定義ViewGroup的 EventViewGroup 后
可以發(fā)現(xiàn)

MainActivity    ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
EventViewGroup  ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
MainActivity    ----    LL setOnTouchListener  onTouch  ---->   ACTION_DOWN ---->   noMsg
EventViewGroup  ----    onTouchEvent    ---->   ACTION_DOWN ---->   noMsg
MainActivity    ----    LL setOnClickListener  onClick  ---->   nullEvent   ---->   noMsg

我們可以發(fā)現(xiàn),和前面Button一樣
先觸發(fā) OnTouch 的事件(對外的,對開發(fā)者的), 再 獲取到OnTouchEvent事件(系統(tǒng)的,消費(fèi)) , 再觸發(fā) OnClick 事件

只是, ViewGroup沒有調(diào)用最外面Activity的OnTouchEvent方法了
** 可以理解成,這里消費(fèi)掉了點(diǎn)擊, 就不用調(diào)用上層的 OnTouch方法了 **


簡單回顧

簡單看了下對應(yīng)的點(diǎn)擊后的區(qū)別
我們簡單對比一下

Paste_Image.png

下一篇我們可以了解dispatchTouchEvent事件分發(fā)淺析(四)Intercept攔截

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容