在學習事件分發機制之前,需要先對以下幾個知識點有所了解:
① view和viewgroup什麼?
② 事件
③ view 事件的分發機制
④ viewgroup事件的分發機制
一、view和viewgroup:
view: view是所有ui元件的基類,
viewgroup :是容納這些元件的容器,其本身也是從view派生出來的.
二、事件:
當手指觸控到view或viewgroup派生的控制項後,將會觸發一系列的觸發響應事件
**三、**view的分發機制:
view中與事件分發有關的方法有兩個:
①dispatchtouchevent
②ontouchevent
dispatchtouchevent : 當觸控乙個view控制項,首先會呼叫這個函式就行,在這個函式體裡決定將事件分發給誰來處理。
ontouchevent:此函式負責執行事件的處理,負責處理事件,主要處理motionevent.action_down、
motionevent.action_move 、motionevent.action_up這三個事件。
public boolean dispatchtouchevent(motionevent event)
if (ontouchevent(event))
} return false;
}
可以看到ontouchevent這個方法是在dispatchtouchevent 方法中執行的,
並且受到ontouch的影響
安卓事件分發
dispatchtouchevent 事件派發先是隧道方式 再是冒泡方式 隧道方式傳遞,直到某乙個元素消耗此事件,由上至下逐層分發檢視。冒泡方式傳遞,當某個檢視消耗事件後,其return true,是與分發相反的方法向上傳遞。具體分發給哪乙個檢視是通過當前觸控點座標在當前層哪個檢視上判斷 onint...
安卓的事件傳遞,中斷,分發機制
安卓的觸控事件有這樣的三個機制 dispatchtouchevent motionevent ev 事件分發 onintercepttouchevent motionevent ev 事件中斷 ontouchevent motionevent event 事件傳遞 執行順序是從上到下 ontouch...
安卓事件分發學習總結(下)
作者的文章已經寫得很清楚了。viewgroup就是比變通的view多了個攔截機制,通俗點講就是viewgroup中重寫了dispatchtouchevent 在其中加上了攔截和對子view的分發管理,而預設情況下是不會攔截的。借用一下作者整理的總結 1.android事件分發是先傳遞到viewgro...