Android事件分发

1、事件分发,由父到子,及Activity->ViewGroup->View,

     三个函数: dispatchTouchEvent, onInterruptEvent(ViewGroup持有), onTouchEvent  

2、手指按下事件down,系统代码执行过程; 

1、调用Activity.dispatchTouchEvent

2、默认情况下再去调用root ViewGroup.dispatchTouchEvent

3、再去遍历root ViewGroup逐步匹配view,看事件是否被消费,及看View.dispatchTouchEvent是否返回true,如果返回true,那么就被消费

4、调用view.dispatchTouchEvent,先判断是否有设置touchListener事件,如果有,就调用TouchListener的onTouch方法, 

         1、onTouch方法返回false,表示还未消费完事件,继续往下调用view.onTouchEvent方法

              1.1 该view没有设置clickable或者点击事件,那么事件继续回传给父类的onTouchEvent执行

               1.2如果有设置了clickable或者点击事件,那么该事件消费完毕

        2、onTouch方法返回true,表示已消费完事件,事件传递结束

5、因此如果有设置,那么onTouch肯定先于onTouchEvent执行


你可能感兴趣的:(Android事件分发)