onTouch事件分發

2021-08-24 17:53:52 字數 812 閱讀 5256

事件機制

我們知道view中有ontouch,onclick, 

1.並且ontouch優先於onclick執行,

2.ontouch有返回值,為true時onclick並不再執行了

因為一切view都extend於view(dispatchtoucheevent),還是viewgroup(onintercepttouchevent)也是view的乙個容器,並寫在事件分發邏輯.

首先看看viewgroup

看看view

最後一張圖說明原因

1. android事件分發是先傳遞到viewgroup,再由viewgroup傳遞到view的。

2. 在viewgroup中可以通過onintercepttouchevent方法對事件傳遞進行攔截,onintercepttouchevent方法返回true代表不允許事件繼續向子view傳遞,返回false代表不對事件進行攔截,預設返回false。

3. 子view中如果將傳遞的事件消費掉,viewgroup中將無法接收到任何事件。

activity -> activity子類 -> window() - > viewgroup -> supter viewgroup -> view   (屬於責任鏈)  handler原始碼分析,button底層是extend textview,用handler來實現事件發發

關於onTouch事件的講解

概要 android存在事件分發機制。事件分發是父控制項向子控制項傳遞,子控制項處理事件,然後逐層返回父控制項 事件分發 ondispatchevent ontouchevent 此事件不做任何解釋,只是單純的分發控制項 onintercepttouchevent 此事件是有返回值的,boolean...

Android對onTouch觸控事件的處理

在android對ontouch主要呼叫三個方法對觸控傳遞 1 public boolean dispatchtouchevent motionevent ev 在觸控時,android首先呼叫的是這個方法,其分配何時呼叫onintercepttounch和ontouchevent,單純的返回tru...

事件分發機制

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