View绘制及事件分发机制

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()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值