View繪製及事件分發機制

2021-08-02 07:44:42 字數 692 閱讀 8059

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