最近在做android类似slidemenu项目,遇到了scrollerview在fragment中没有响应手势滑动的动作
仔细研究了下并参考别人的研究成果
基本的规则是:
1. ondown事件总是会先走onInterceptTouchEvent()方法
2. 如果ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后
返回false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理。
会传递到目标view中去。
3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后
return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,
目标view将接收不到任何事件。
4. 如果最终需要处理事件的view的onTouchEvent()返回了false(没有消费该事件),那么该事件将被传递至其上一层次的view(父view层)的onTouchEvent()处理。
5. 如果最终需要处理事件的view 的onTouchEvent()返回了true(已消费事件),那么后续事件将可以继续传递给该view的onTouchEvent()处理。
onInterceptTouchEvent返回true的时候,表示事件被拦截,只在根view中响应相关touch事件
onInterceptTouchEvent返回false的时候,表示没有拦截,子view正常响应事件
onTouchEvent返回false的时候,表示事件没有被消费,事件会顺序上传到parentview去。
onTouchEvent返回true的时候,表示事件已消费,事件不会再作传递。
参考 :http://www.blogjava.net/TiGERTiAN/archive/2011/02/22/344869.html
http://blog.csdn.net/bigapple88/article/details/7658938
ViewGroup中的onInterceptTouchEvent和onTouchEvent调用时序
猜你喜欢
转载自hellorheaven.iteye.com/blog/2068570
今日推荐
周排行