View的Touch事件分发机制

View的Touch事件分发机制

首先,事件的分发机制由 dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()三个方法进行处理

用代码表示三者之间的关系( 简单明了)

Public boolean dispatchTouchEvent(MotionEvent ev)
{
boolean consume=false;
if(onInterceptTouchEvent(ev))
consume=onTouchEvent(ev)
else
consume=child.dispatchTouchEvent(ev);

return consume;
}

逻辑过程: 点击事件到达顶级viewgroup,会调用viewgroup的dispatchTouchEvent,之后的处理逻辑如下,如果顶级viewgroup的onInterceptTouchEvent返回true,则事件由viewgroup处理,如果viewgroup的mOnTouchListener被设置,则onTouch会被调用,否则onTouchEvent会被调用,也就是说onTouch会屏蔽掉onTouchEvent。如果顶级viewgroup不拦截事件,事件会传递到子view中,子view对事件的处理逻辑跟viewgroup类似.

你可能感兴趣的:(android,view,Touch事件)