View的事件體系 事件分發機制

2021-08-10 07:14:46 字數 1358 閱讀 4074

viewgroup事件傳遞方法:

dispatchtouchevent、onintercepttouchevent、ontouchevent

(1)—dispatchtouchevent:當前view接到事件呼叫的方法,返回boolean型別值,會呼叫如下偽**邏輯,所以返回值會受自己的

ontouchevent和子類的dispatchtouchevent返回值決定。

(2)—onintercepttouchevent:負責是否攔截事件,返回boolean型別值,返回true則表示攔截,返回false則不攔截,預設值返回false,在同一事件序列中,返回true則呼叫當前view的ontouchevent,返回false則呼叫子view的事件序列,如果onintercepttouchevent在某個事件中返回true,下次的序列事件不再呼叫onintercepttouchevent方法,dispatchtouchevent直接掉到ontouchevent.

(3)—ontouchevent:負責處理事件,返回boolean型別值

view的事件傳遞方法:

dispatchtouchevent、 ontouchevent

viewgroup和view事件傳遞關係如下(偽**)

public boolean dispatchtouchevent(motionevent  event)else

return consume;

}

手指觸控到滑動到抬起的事件過程

(1)觸控:

(2)滑動:滑動時不斷呼叫此流程

(3)抬起:

處理滑動衝突方法

1.水平和豎直滑動衝突:比如scrllview巢狀listview

判斷水平滑動和豎直滑動的移動距離差,水平》豎直 則水平滑動,反之。

2.同一方向滑動衝突,比如listview巢狀listview

這個必須有需求限定的,比如內部listview滑動到頂部了,則再滑動時,則事件交由外部的listview處理,同方向的滑動,是需要專案需求然後再定規則,只要處理滑動時執行的流程,在流程中做好自己的限制就可以實現自己的解決方案。

View 事件分發機制

小小總結下 詳細看1 viewgroup繼承自view,新增了onintercepttouchevent函式,view無此函式,故不會攔截 2 首先呼叫的是dispatchtouchevent,在此函式中進行判斷是否呼叫onintercepttouchevent,ontouch,ontoucheve...

View事件分發機制

擷取自 android開發藝術探索 三個重要方法 public boolean dispatchtouchevent motionevent ev 事件分發,return true向子view傳遞,return false傳遞到父view public boolean onintercepttouc...

View的事件分發機制

view事件的分發機制由三個方法共同完成,這三個方法是 public boolean dispatchtouchevent motionevent ev public boolean onintercepttouchevent motionevent ev public boolean ontouc...