View绘制及事件分发机制

来源:互联网 发布:学美妆软件 编辑:程序博客网 时间:2024/06/09 21:10

View绘制及事件分发机制

view绘制机制

measure()–>onMeasure();

layout()–>onLayout();

draw():

1、绘制自己background.draw(canvas);

2、绘制自己(onDraw);

3、绘制children(dispatchDraw);

4、绘制服饰(onDrawScrollBars)

view分发机制:

主要由3个函数组成:
dispatchTouchEvent():进行事件分发;

onInterceptTouchEvent():用于事件拦截;

onTouchEvent():处理具体的事件,类似于OnTouchListener、OnClickListener

具体的逻辑如下:

public boolean dispatchTouchEvent(MotionEvent ev){     //默认为false     boolean consume = false;     //这是ViewGroup的流程,如果为View则省略了onInterceptTouchEvent()方法     if(onInterceptTouchEvent(ev)){        consume = onTouchEvent(ev);      } else {        consume = child.dispatchTouchEvent(ev);      }         return consume;   }

滑动冲突

1、外部拦截:

顾名思义是在父容器中,更改onInterceptTouchEvent()方法,

2、内部拦截:

父容器不拦截任何事件,所有的事件都传递给子元素,如果子元素需要此事件就直接消耗掉,否则交由父容器进行处理,意思是需要更改子元素的dispatchTouchEvent()以及父元素的onInterceptTouchEvent()。

原创粉丝点击