触摸事件传递有3个方法:
- dispatchTouchEvent:用来分发事件,如果你拦截则交给onTouchEvent处理,否则,传给子view。
- onInterceptTouchEvent:事件阻拦。返回true表示拦截,false不拦截。
- onTouchEvent:处理触摸事件
- 其中Activity和View只有dispatchTouchEvent和onTouchEvent方法,而ViewGroup则三种方法都有。
- 一般情况下,Activity中的dispatchTouchEvent不去重写方法,默认返回父类的dispatchTouchEvent。然后传递给ViewGroup。
- ViewGroup收到后在dispatchTouchEvent中,将事件交给onInterceptTouchEvent处理,返回true则自己处理,返回false则向下传递给View。
- View收到后则交给onTouchEvent处理,如果onTouchEvent返回true,则表示已处理。如果返回false,则表示未处理继续向ViewGroup传递。如果ViewGroup的onTouchEvent返回false,则继续向父ViewGroup传递处理。一般来说Activity不处理onTouchEvent事件。