最近看了很多關於事件分發機制的文章下面對事件分發機制進行乙個總結純理論性的:
事件攔截機制有三種ondispatchtouchevent()攔截,onintercepttouchevent()攔截,ontouchevent()攔截。所有的方法在後面會有圖進行展示。
1.ondispatchtouchevent()攔截,這裡就把它稱作分發攔截如果return true 代表攔截,不繼續向下分發。down事件,move事件,up事件直接在當前view進行處理。不呼叫onintercepttouchevent(),ontouchevent()函式。如果return false,down事件會直接到父view的ontouchevent(),等待被ontouchevent()攔截進行處理。move事件,up事件會在到達down事件在ontouchevent()的攔截層進行直接呼叫。
2.onintercepttouchevent()攔截,return true 進行攔截,事件不再進行向下分發在本層直接呼叫ontouchevent()向上回溯等待ontouchevent()進行攔截處理。move事件,up事件會在到達down事件在ontouchevent()的攔截層進行直接呼叫。
3.ontouchevent()的攔截,return true攔截,事件不再向後續的ontouchevent()傳遞。move事件,up事件會在到達down事件在ontouchevent()的攔截層進行直接呼叫。
圖說明1.ondispatchtouchevent
()攔截 return true 是在viewgroup1進行攔截。2.ondispatchtouchevent
()攔截 return false 是在view進行攔截,
ontouchevent()是在
viewgroup2進行攔截。3.
ontouchevent()是在
viewgroup2攔截。4.onintercepttouchevent(),ontouchevent()是在viewgroup2攔截。
android 事件分發複習
1.事件在activity 中的傳遞 public boolean dispatchtouchevent motionevent ev if getwindow superdispatchtouchevent ev 如果所有的view 都不消費該事件,那麼事件最終會到達 activity 的onto...
android之事件分發的細節說明
1 在dispatchtouchevent 中,當前action down move up 返回true才會執行後邊的action,若dispatchtouchevent 直接return false,則後邊的action不會得到執行 如 當使用者按下 down時,dispatchtoucheven...
Android開發坑系列 之事件分發機制
總結一下 事件序列的定義 從手觸控螢幕 含 到離開螢幕 含 期間所發生的一系列互動事件。主要由action down action move actoin up action cancel 等組成,其中一次事件序列中,down和up都只有最多乙個,move有若干個,可以為0個。定律 某個view只有...