android的事件傳遞對應著三個階段:分發、攔截和消費,
分發:對應的方法是dispatchtouchevent方法,在android系統中,所有的觸控事件都是通過這個方法來分發的。返回值為true表示事件被當前檢視消費掉,返回super.方法表示繼續分發該事件,如果當前檢視是viewgroup及其子類,則會呼叫onintercepttouchevent方法來判斷是否需要攔截事件
攔截:對應的方法是onintercepttouchevent方法,這個方法只在viewgroup及其子類中才有,在view和activity中不存在。返回true表示攔截事件,同時交給自身的ontouchevent方法來消費,返回false和super.表示不攔截事件,繼續傳遞給子檢視
消費,對應的方法是ontouchevent方法,返回true表示自身可以處理對應的事件,不會向上傳遞給父檢視,返回false表示當前檢視不會處理事件,交給父檢視的ontouchevent方法進行處理
view事件的觸發順序是先執行ontouchevent方法,再執行onclick方法,如果ontouch返回true,則不會呼叫onclick方法了
觸控事件的傳遞順序是activity--viewgroup--view的,viewgroup通過onintercepttouchevent方法對事件進行攔截,如果返回true則事件被攔截,不會傳遞給子view,如果返回false或者super.則事件傳遞給子view,在子view對事件進行消費後,viewgroup不會收到任何事件
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...