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...