Android事件分發 淺記

2021-07-25 19:50:10 字數 796 閱讀 4528

這裡我們捋一下控制項的包含關係 :rootview包含viewgroup包含view

事件分發的順序就是rootview--->viewgoroup--->view 這個是定好的規則不多解釋。另外一點,假如說我的手指點的是view的上方,沒點到view,那事件是不會發給view的。

說到這裡基本上是說了個思路,那具體是怎麼分發的呢。不管是什麼型別view都有乙個方法

@override

public boolean dispatchtouchevent(motionevent event) (資質代辦)

這個方法就是事件分發的關鍵了,例如rootview遍歷它的一級子控制項(如上圖所畫,那view就不算是rootview的一級子控制項了),如果有子控制項滿足條件,就呼叫子控制項的dispatchtouchevent(motionevent event)方法,那麼事件就發給它的子控制項了。那什麼是滿足條件呢,比如最基本的條件,手指點的位置要和子控制項有重合(大白話就是我最起碼要點到子控制項上吧!)。同理一級子控制項再遍歷它自己的一級子控制項........事件就一級一級的分發下去了。另外

事件的資訊(比如說觸屏的位置,觸屏的動作是按下還是彈起等等)就用motionevent event這個物件包裝好了,用於使用。

另外說到事件的分發,就不得不說事件的消耗。事件是先分發再消耗,分發到不能分發了才開始消耗!!!還是剛才的圖,比如事件發給view了,view開始要分發事件,遍歷子控制項.....等等它沒有也不能有子控制項啊!這個時候事件分發就結束了,這個時候才開始事件的消耗處理!

還有事件的控制等等.....以後有機會再寫,內容還是比較多的。

Android 事件分發

touch 事件的分發和消費機制dispatchtouchevent onintercepttouchevent 和ontouchevent dispatchtouchevent 事件分發 true 事件會分發給當前view 並由dispatchtouchevent 方法消費,同時停止向下傳 fal...

Android事件分發

android 中與 touch 事件相關的方法包括 dispatchtouchevent motionevent ev onintercepttouchevent motionevent ev ontouchevent motionevent ev 能夠響應這些方法的控制項包括 viewgroup...

Android事件分發

當使用者觸控螢幕時,系統會對觸控事件做出相應的相應,這個事件會產生乙個motionevent,系統根據一定的規則將其傳遞給view進行處理,這個過程就是事件分發機制了。事件的傳遞分為兩個階段,即捕獲階段和冒泡階段。捕獲階段 事件最先由最外層的view接收,然後依次向內層傳遞,直到傳遞到最小的view...