ViewGroup也是View,所以接下来看View的dispatchTouchEvent():
第二个条件是判断当前点击的空间是否为enable,但由于基本View都是enable的,所以这个条件基本返回true;
第三个条件表示我们调用setOnTouchListener时必须覆盖onTouch()的返回值。
可见onTouch()方法的优先级高于onTouchEvent()。
- onTouchEvent()
可以看到只要View的CLICKABLE和LONG_CLICKABLE有一个为true,那么onTouchEvent()就会返回true消耗这个事件。我们通常用setOnClickListener和setOnLongClickListener来设置被点击和长按。
接着看下performClick()方法:
可以看到,如果MOnClickListener不为空,那么它的onClick()