結合網上資料和自己理解寫的,是個自己的總結,翻到的朋友不一定看的懂,主要參考位址如下
主要參考:
事件分發包含 單個view中如何分發 viewgroup和view如何分發事件
在單個view中
ontouch ontouchevent onclick 三個方法執行順序 從左到右
在乙個view接受到觸控後 首先觸發 dispatchtouchevent(ev)方法 這個方法會先呼叫
ontouch方法,執行的條件是 三個
如果montouchlistener != null,(mviewflags & enabled_mask) == enabled和montouchlistener.ontouch(this, event)這三個條件都為真,就返回true,否則就去執行ontouchevent(event)方法並返回。
然後如果ontouch方法返回false 才會執行 ontouchevent方法,ontouchevent返回 fasle才會返回執行onclick方法
viewgroup和view的事件傳遞、
這個事件分發機制是為了通過action_down 找出在**真正消費事件,即執行ontouchevent方法是在哪個view裡,在後續的執行move 和up 以及其他的動作時直接找到view
1,事件分發:
public boolean dispatchtouchevent(motionevent ev)
2,事件攔截:public boolean onintercepttouchevent(motionevent ev)
3,事件響應:public boolean ontouchevent(motionevent ev)
事件向下傳遞是通,1接收到資訊 在super方法裡會呼叫ontouch 和ontouchevent
1.true,fasle ,super 有不同結果,// 當返回true時,收到事件,並且處理事件,事件在這個方法裡消費
// 當返回false時, 表示收到事件,但不向下傳遞, 也不處理事件,最終由上一層的ontouchevent來響應
// super.dispatchtouchevent(ev);其實和false結果一樣,不一樣的是他會呼叫呼叫ontouch 和ontouchevent
2.
3.
Android事件分發機制
public boolean dispatchtouchevent motionevent ev else return consume 上面的一段 將事件分發中三個主要方法的關係表現。一 touch 事件分析 事件分發 public boolean dispatchtouchevent motio...
Android事件分發機制
花了一下午的事件研究了一下android的事件分發機制,覺得有必要總結一下 順便分享出來,希望對大家有用 1 首先最重要的是需要了解viewgroup裡面重寫的三個方法 1 dispatchtouchevent 用於事件的分發 2 onintercepttouchevent用於事件的攔截 3 ont...
Android事件分發機制
一 三個重要的方法 dispatchtouchevent onintercepttouchevent activity和view無此方法 activity 作為事件的原始分發著會造成無響應 view最為事件的最末端要麼處理事件,要麼回傳事件 ontouchevent 二 事件分發流程 activit...