View事件分发

ViewGroup:
DispatchTouchEvent 
•   return true:表示该View内部消化掉了所有事件
•   return false:表示事件在本层不再继续进行分发,并交由上层控件的onTouchEvent方法进行消费
•   return super.dispatchTouchEvent(ev):默认事件将分发给本层的事件拦截onInterceptTouchEvent方法进行处理
OnInterceptTouchEvent  
•   return true:表示将事件进行拦截,并将拦截到的事件交由本层控件的onTouchEvent进行处理
•   return false:表示不对事件进行拦截,事件得以成功分发到子View
•   return super.onInterceptTouchEvent(ev):默认表示不拦截该事件,并将事件传递给下一层View的dispatchTouchEvent
OnTouchEvent 默认false
•   return true:表示onTouchEvent处理完事件后消费了此次事件
•   return fasle:表示不响应事件,那么该事件将会不断向上层View的onTouchEvent方法传递,直到某个View的onTouchEvent方法返回true
•   return super.dispatchTouchEvent(ev):表示不响应事件,结果与return false一样
子View:
DispatchTouchEvent 事件分发
OnTouchEvent 默认true
1、外部拦截法
重写父ViewGroup
2、内部拦截法
重写子View
getParent().requestDisallowInterceptTouchEvent();//通知父View拦截
false 允许父拦截
true 不拦截
子view和父view要同时响应滑动事件,子view单独有点击事件
同时设置ontouchlistener,子view在滑动事件中(motionevent.up)设置点击事件。

你可能感兴趣的:(View事件分发)