android事件分發機制知識點

2021-07-14 19:52:33 字數 1135 閱讀 2030

1.事件分發機制涉及到三個方法:

1).public boolean onintercepttouchevent(motionevent ev);

2).public boolean dispatchtouchevent(motionevent ev);

3).public boolean ontouchevent(motionevent event);

2.viewgroup擁有上述三個方法,view中沒有onintercepttouchevent()方法;

3.事件傳遞主要是在viewgroup與view之間;

4.dispatchtouchevent()方法(viewgroup):

1:如果是返回true或者false 都不會繼續往下層分發,如果返回false 則呼叫上層的ontouchevent()方法(如果是activity的viewgroup 則 事件被系統消費);如果返回true,則表明事件已經被消費(ps:如果你想讓你的activity裡面的空間都不具備消費事件的能力,直接再activity的dispatchtouchevent()方法返回true);

2:如果返回的是預設的super.dispatchtouchevent()則繼續往下層分發;

5.如果最終都沒有view消費事件,則事件會在activity中被消費;

6.view的onclicklistener的優先順序低於ontouchlistener:

public boolean dispatchtouchevent(motionevent event)

return ontouchevent(event);

} onclicklistener是在ontouchevent方法中的,所以驗證了第6條;

7.一般情況下,viewgroup或者view消費了事件(比如action_down),那麼後續的事件(action_move或action_up)也將交由它處理;

Android事件分發機制

public boolean dispatchtouchevent motionevent ev else return consume 上面的一段 將事件分發中三個主要方法的關係表現。一 touch 事件分析 事件分發 public boolean dispatchtouchevent motio...

Android事件分發機制

花了一下午的事件研究了一下android的事件分發機制,覺得有必要總結一下 順便分享出來,希望對大家有用 1 首先最重要的是需要了解viewgroup裡面重寫的三個方法 1 dispatchtouchevent 用於事件的分發 2 onintercepttouchevent用於事件的攔截 3 ont...

Android事件分發機制

一 三個重要的方法 dispatchtouchevent onintercepttouchevent activity和view無此方法 activity 作為事件的原始分發著會造成無響應 view最為事件的最末端要麼處理事件,要麼回傳事件 ontouchevent 二 事件分發流程 activit...