Android事件傳遞機制分析

2021-08-14 08:47:37 字數 1286 閱讀 6358

一、android最基本的螢幕操控事件

down:按下事件。

move:移動事件。

up:離開事件。

二、在總結的事件傳遞機制時,先介紹一下viewgroup與

view有關事件傳遞的方法

viewgroup有

dispatchtouchevent、onintercepttouchevent、ontouchevent方法 

view有

dispatchtouchevent、ontouchevent方法

dispatchtouchevent:觸控事件分發。

onintercepttouchevent:觸控事件攔截。返回true時,攔截該動作;返回false時,不攔截該動作。

ontouchevent:觸控事件消費。返回true時,消耗該動作;返回false時,不消耗該動作。

三、事件分發流程圖

分發的是down事件,down事件的分發是為了尋找乙個可以處理完整事件的控制項,down被處理move和up也就被處理了

注:此事件分發圖是不包括攔截的 

解釋:down事件從activity開始往下層子控制項分發,分發到沒有子控制項的控制項view,不能繼續往下分發了,所以view開始呼叫ontouchevent方法判斷自己是否能處理該事件,若返回true代表消耗了該事件,view的dispatchtouchevent方法也返回true,事件結束;若返回false,代表處理不了這個事件,則down事件往上返回到viewgroup2,viewgroup2的處理同view,此處不再贅述。

帶有攔截(oninterceptevent)的事件分發,返回true表示攔截,false表示不攔截。攔截的意思就是強制停止向下分發,此時該控制項將要判斷自身是否能處理該事件,如果處理不了就繼續向上返回,返回讓上一級處理,如果該控制項可以處理該事件則事件被消耗,事件結束。

程式執行截圖

四、 ontouch方法的返回值說明

return true:事件被消耗,不會繼續向下傳遞。

return false:事件沒有被消耗。雖然ontouch事件中沒有super.ontouch()方法,但是該事件還是會繼續傳遞,給該控制項的其他方法使用,或給其他的控制項使用。

Android事件傳遞機制

android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件 action down action move action move action move.action move acti...

Android事件傳遞機制

android開發過程中複雜混合控制項的難點之一的就是事件衝突。我們知道在處理事件衝突中,最重要的方法是 dispatchtouchevent onintercepttouchevent ontouchevent 通過作用這三個方法,我們可以達到事件的分發 攔截 消費的效果。在activity 無o...

Android事件傳遞機制

android中dispatchtouchevent,onintercepttouchevent,ontouchevent的理解 android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件...