View的事件傳遞機制

2021-07-15 07:21:14 字數 1003 閱讀 9460

事件傳遞機制中最重要的兩個函式

dispatchtouchevent(motionevent ev)

負責分發事件

ontouchevent(motionevent event)

負責處理事件

activity層:

觸控事件發生後首先呼叫activity的dispatchtouchevent(motionevent event)函式,然後呼叫onuserinte***ce,接著就把事件傳遞給root view,也就是乙個groupview分發給他的子view。如果分發下去的事件沒人處理的話,會呼叫activity自己的ontouchevent函式來處理事件。

viewgroup層:

觸控事件傳遞給viewgroup之後,他也通過dispatchtouchevent對事件進行派發,onintercepttouchevent()函式用來攔截事件,如果返回值為true,則不會繼續傳遞,如果返回值為false,則不對此事件進行攔截。onintercepttouchevent()函式只有viewgroup類有。view類沒有。

view層:

觸控事件傳遞給view之後,他也通過dispatchtouchevent函式進行處理,首先觸發的是ontouchlistener中的ontouch函式(如果有設定的話),然後會執行ontouchevent函式,最後如果有click事件則會執行click事件。

總結,真正進行處理的只有view中的**,但是每一層次都有dispatchtouchevent進行傳遞。每一次只會傳遞乙個action,當乙個action操作完了之後才會進行下乙個,比如0表示action_down,1表示action_up,2表示action_move。

本文有參考【工匠若水 但絕無抄襲,算是讀書筆記吧。

View事件傳遞機制

activity,viewgroup,view 1.預設情況 activity dispatchtouchevent mylinearlayout dispatchtouchevent mylinearlayout onintercepttouchevent customview dispatcht...

View 事件傳遞

1 所有touch事件都被封裝成了motionevent物件,包括touch的位置 時間 歷史記錄以及第幾個手指 多指觸控 等。2 事件型別分為action down,action up,action move,action pointer down,action pointer up,action...

View 事件傳遞

1 基礎知識 1 所有 touch 事件都被封裝成了 motionevent 物件,包括 touch 的位置 時間 歷史記錄以及第幾個手指 多指觸控 等。2 事件型別分為 action down,action up,action move,action pointer down,action poi...