文章转自http://blog.youkuaiyun.com/guolin_blog/article/details/9097463
由于我写博客其实都是自己理解的,比较简单。
给一个Button注册一个onTouch事件,和onClick事件,onTouch事件返回false,会执行onTouch的Action,如Down,Move,UP,最后执行onclick方法,如果onTouch方法返回false,则会执行Ontouch的所有Action,不会执行onClick方法,查看view源码,dispachTouchEvent方法,首先会判断当前View是否设置了onTouch监听,该控件是否可用,onTouch监听是否返回true,如果三个条件都满足,则view自己处理事件。如果不满足则执行onTouChEvent方法,如果我们把Button改成ImageView,然后设置onTouch监听为false,结果执行ActionDown事件就结束了,首先touch事件的传递机制只有第一个Action返回true,后面的动作才会执行,为什么Button就可以,因为Button可以点击,在onTouchEvent方法中设置会判断当前view是否可以点击,然后就行一系列Action,而且这个事件判断都会返回false。