主要測試下intercept:
//viewgroup dispatchtouchevent 超級偽碼
if (actionmasked == motionevent.action_down)
//mfirsttouchtarget:viewparent中消費 事件序列 的子view
// (從down到up或cancel這一串叫乙個事件序列)
if (actionmasked == motionevent.action_down || mfirsttouchtarget != null) else
} else
控制的閥門
action_down (down事件,也就是事件序列的開始)
mfirsttouchtarget (該父view的子view是否 消耗事件序列)
disallowintercept(是否允許父view攔截 事件)
備註:
上面巴拉巴拉的一堆,推薦任玉剛的《android開發藝術探索》,裡面講的很清楚。
總結父view onintercepttouchevent down
子view操控flag_disallow_intercept,讓父view一直走jump2:,某些情況走jump1: ,在jump1: 中父view就可以攔截(這樣也可以解決滑動衝突)
Android touch事件傳遞
android的touch事件分發機制,涉及到每一層級的處理和傳遞,比較複雜,本文是在參考以下日誌和android原始碼的基礎上總結的,在此表示感謝 1.touch事件傳遞過程 touch事件經過android核心層的處理,最終會傳遞到activity的dispatchtouchevent方法,由此...
android touch事件解析
android touch事件 乙個簡單的觸控螢幕所經歷的事件 action down action move action move action move.action move action up,即乙個acitondown,多個actionmove,乙個actionup android每個g...
android Touch事件流程
當乙個事件來臨的時候,會先傳遞給最外層的viewgroup 父view,比如linearlayout,framelayout 如果這個viewgroup沒有去攔截這個事件的話,才會給傳遞給下層的viewgroup或者view。如果被攔截掉的話,它會自己去處理這個事件,這個viewgroup內的子vi...