事件分發機制

2021-07-24 12:10:05 字數 761 閱讀 8181

對於安卓事件傳遞和消費機制,他給我們提供了3個方法,dispatchtouchevent(),onintercepttouchevent()和ontouchevent():

當監聽到事件時,首先由activity捕獲;開始進入事件分發流程.

dispatchtouchevent():

如果返回的是true,表明事件不會再本層進行分發並且在事件分發自身中已經被消費,並且事件已經完結;

如果返回false,表明事件也不會在本層進行分發,但他會交給上層控制項的ontouchevent()方法進行消費;

如果本層控制項已經是activity,那麼會被系統消費或處理.

如果返回super,那麼事件就會交給本層的onintercepttouchevent()進行處理.

onintercepttouchevent():

如果返回true,則表示事件進行攔截,交給本層的ontouchevent()方法進行消費;

如果返回false或者super,就不會對事件進行攔截,都會交給子view的dispatchtouchevent()方法進行處理.

ontouchevent():

如果返回true,表示touchevent處理完事件後消費了本次事件,事件也將終結,不會再有後續的冒泡

如果返回false,表示touchevent處理完事件後繼續向上一層的view冒泡,交給上一層的ontouchevent進行處理.

如果返回super,則預設的處理邏輯和false一樣,也是本層處理完時間後交給上一層處理

事件分發機制

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

事件分發機制

1 public boolean dispatchtouchevent motionevent ev 事件分發方法,分發event所呼叫 2 public boolean onintercepttouchevent motionevent ev 事件攔截方法,攔截event所呼叫 3 public ...

事件分發機制

view的事件分發 對於事件分發機制,舉個簡單的例子,在乙個activity中只有乙個按鈕,如果我們想給這個按鈕註冊乙個點選事件,只需要呼叫setonclicklistener方法,這樣在onclick方法裡面寫實現的 就可以在按鈕被點選的時候執行.我們再給這個按鈕新增乙個touch事件,只需要呼叫...