measure()–>onmeasure();
layout()–>onlayout();
draw():
1、繪製自己background.draw(canvas);
2、繪製自己(ondraw);
3、繪製children(dispatchdraw);
4、繪**飾(ondrawscrollbars)
主要由3個函式組成:
dispatchtouchevent():進行事件分發;
onintercepttouchevent():用於事件攔截;
ontouchevent():處理具體的事件,類似於ontouchlistener、onclicklistener
具體的邏輯如下:
public boolean dispatchtouchevent(motionevent ev) else
return consume;
}
1、外部攔截:
顧名思義是在父容器中,更改onintercepttouchevent()方法,
2、內部攔截:
父容器不攔截任何事件,所有的事件都傳遞給子元素,如果子元素需要此事件就直接消耗掉,否則交由父容器進行處理,意思是需要更改子元素的dispatchtouchevent()以及父元素的onintercepttouchevent()。
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...