1.复写viewgroup的 onInterceptTouchEvent方法, 返回true会拦截子类事件,false不会拦截,交由子view的    dispatchTouchEvent方法。

2.viewgroup 中有一个dispatchTouchEvent方法,在该方法中disallowIntercept是指是否禁用掉事件拦截的功能,默认是false,也可以通过调用requestDisallowInterceptTouchEvent方法对这个值进行修改。

3.viewgroup中自view的click得到了执行,说明子view 的dispatchtouchevent方法返回了true,会拦截viewgroup的事件。

 

viewgroup  的dispatchTouchEvent源码分析。(以下是伪代码,理解用)
dispatchTouchEvent(){

     在action_down时进行判断(){

            if(disallowIntercept || !onInterceptTouchEvent ){ // 参考2 

                        //如果viewgroup的intercept返回false 说明子view的点击事件在这里进行。

                       for(){

                             //遍历子view

                             if(判断自view是否正在被点击){.

                                            if(调用子view的dispatchTouchEvent()){

                                                   //如果view的dispatchTouchEvent方法返回true  条件成立而使得整个viewgroup的dispatchTouchEvent方法返回为true,说明子view消费掉了点击事件。 事件到此结束。

                                                            return  true;

                                            }

                             }

                       }

            }

     }

}

参考自郭神的源码分析

http://blog.csdn.net/guolin_blog/article/details/9153747


更多相关文章

  1. 【Android】 分享一个完整的项目,适合新手!
  2. Android(安卓)蓝牙通信
  3. android 基本布局(RelativeLayout、TableLayout等)使用方法及各种
  4. 那些年,我们一起踩过的 “Android(安卓)坑”
  5. Drawable着色问题
  6. android sdk sdkmanger无界面使用方法(命令行更新SDK)
  7. Kotlin for Android使用教程(一)
  8. Service的onStartCommand方法的疑问
  9. 关于Spring for Android

随机推荐

  1. android 终端基本命令
  2. Android(安卓)LCD(一):LCD基本原理篇
  3. 创建android画笔程序的样例(有镜面效果)
  4. android机顶盒开发问题集
  5. android三种动画
  6. Android软件安全与逆向分析笔记(3)
  7. Android(安卓)应用程序开关GPS
  8. Android(安卓)PowerManager.WakeLock分享
  9. listView 中relativeLayout 布局的 andro
  10. 在Android中将子View的坐标转换为父View