android touch事件解析

2021-07-02 02:03:42 字數 960 閱讀 8062

android touch事件:

乙個簡單的觸控螢幕所經歷的事件:action_down->action_move->action_move->action_move...->action_move->action_up,即乙個acitondown,多個actionmove,乙個actionup;

android每個groupview(也是繼承自view)都有三個方法,每個view都有dispatchtouchevent,ontouchevent這兩個方法(因為沒有子view,所以沒有攔截方法):

1)public boolean dispatchtouchevent(motionevent ev)  這個方法用來分發touchevent

2)public boolean onintercepttouchevent(motionevent ev) 這個方法用來攔截touchevent

3)public boolean ontouchevent(motionevent ev) 這個方法用來處理touchevent

當touchevent發生時,首先activity將touchevent傳遞給最頂層的view

首先觸發頂層view的dispatchtouchevent,

返回true:

執行該view的ontouchevent方法。

返回true:

touch事件消費掉並終止。

返回false:

那麼這個事件會從這個 view 往上傳遞,都是 ontouchevent 來接收。而如果傳遞到最上面的 ontouchevent 也返回 false 的話,這個事件就會「消失」,而且接收不到下一次事件。

返回false:

執行該view的onintercepttouchevent方法。

返回true:

執行該view的ontouchevent方法。

返回false:

touch事件傳遞給他的子view,並重複執行上面的操作。

Android touch事件傳遞

android的touch事件分發機制,涉及到每一層級的處理和傳遞,比較複雜,本文是在參考以下日誌和android原始碼的基礎上總結的,在此表示感謝 1.touch事件傳遞過程 touch事件經過android核心層的處理,最終會傳遞到activity的dispatchtouchevent方法,由此...

android Touch事件流程

當乙個事件來臨的時候,會先傳遞給最外層的viewgroup 父view,比如linearlayout,framelayout 如果這個viewgroup沒有去攔截這個事件的話,才會給傳遞給下層的viewgroup或者view。如果被攔截掉的話,它會自己去處理這個事件,這個viewgroup內的子vi...

Android Touch事件分發

事件 viewgroup view有子元素 view無子元素 activity 方法功能 public boolean dispatchtouchevent motionevent ev yy ny分發 public boolean onintercepttouchevent motionevent...