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