安卓的事件傳遞,中斷,分發機制

2021-07-03 21:50:45 字數 714 閱讀 1942

安卓的觸控事件有這樣的三個機制:

dispatchtouchevent(motionevent ev)(事件分發)

onintercepttouchevent(motionevent ev)(事件中斷)

ontouchevent(motionevent event)(事件傳遞)

執行順序是從上到下

ontouchevent(motionevent event),當手指觸控到螢幕的時候,父控制項會把這個事件傳遞給子控制項,如果子控制項返回true,則代表這個事件在這裡被消費掉,如果返回false,這個事件則向父控制項傳遞,

onintercepttouchevent(motionevent ev)(事件中斷),當事件在父控制項手上時,父控制項有能力把它中斷掉,不在往下傳遞,

如果返回值為true:則代表事件到這來被中斷掉,就會執行自己的ontouchevent,意,奇怪的是從move開始,而不是down,所以在down裡有做處理的要注意,

如果返回值為false:將不會執行ontouchevent方法,而是把事件傳給子控制項

dispatchtouchevent(motionevent ev)(事件分發),

如果返回true,事件將在此被消費掉,不再傳遞,

每乙個控制項都有乙個分發機制,當這個控制項被觸控時,可以將這個事件分發給別的控制項

用法:要得到此事件的控制項物件名.dispatchtouchevent(motionevent ev);

安卓事件分發機制學習

在學習事件分發機制之前,需要先對以下幾個知識點有所了解 view和viewgroup什麼?事件 view 事件的分發機制 viewgroup事件的分發機制 一 view和viewgroup view view是所有ui元件的基類,viewgroup 是容納這些元件的容器,其本身也是從view派生出來...

安卓事件分發

dispatchtouchevent 事件派發先是隧道方式 再是冒泡方式 隧道方式傳遞,直到某乙個元素消耗此事件,由上至下逐層分發檢視。冒泡方式傳遞,當某個檢視消耗事件後,其return true,是與分發相反的方法向上傳遞。具體分發給哪乙個檢視是通過當前觸控點座標在當前層哪個檢視上判斷 onint...

簡析安卓事件分發

ontouchevent,dispatchtouchevent,setontouchlistener 無論是down,move,up執行的順序都是 首先執行的是 dispatchtoucheventpublic boolean dispatchtouchevent motionevent event...