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