准备工作已经完成,闲言少叙书归正传吧。
和拦截处理机制详解一样,为了系统的研究android对事件的处理,我也写了一个小demo对不同的情况进行测试并结合源码分析(多说一句,其实看源码确实很枯燥,有时候因为水平有限有的部分看不懂而查阅大量资料,笨人有笨法:结合demo测试验证和理解,虽然效率低但是效果不错),可以得出如下的结论(至于结论的由来,下面会说明):
1)android对事件分发的顺序为:Activity–>PhoneWindow->DecorView->yourView;
2)android控件对事件处理的优先级:onTouch>onTouchEvent>onClick
android既然可以对事件进行拦截,肯定有某个方法对事件进行的传递或者分发(以前我总是说事件传递,但是看了各种资料都说是事件分发,在此统一一下就用“分发”这个名词吧)。完成事件分发功能的方法由Activity的dispatchTouchEvent(MotionEvent ev)l来负责: