当看到这两个方法时,我们大概就应该直到
onTouchEvent是触摸反馈的事件,onTouch为一个方法。
像这种写法,我们经常看到:
1 | //onTouch 方法 |
我们直到事件的传递分发从 diapatchTouchEvent() 方法开始,可以看下该方法:
1 | public boolean dispatchTouchEvent(MotionEvent event) { |
可以看到,程序优先判断了设置了 onTouchListener ,然后再判断 onTouchEvent, 即判断的先后顺序不同。
在前面我们说到,如果设置了 onTouchListener 并且在重写 onTouch 方法中返回了 true ,表明消费这个控件的触摸事件,那么该控件的点击事件将无法收到,因为点击事件 performOnClick 是在 onTouchEvent() 方法中执行的,如下:
1 | public boolean onTouchEvent(MotionEvent event) { |