美文网首页
Android触摸事件传递机制

Android触摸事件传递机制

作者: LongSh1z | 来源:发表于2019-06-17 17:17 被阅读0次

1.分类
Activity:拥有dispatchTouchEvent和onTouchEvent两个方法。
ViewGroup:拥有dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个方法。
View(不能再作为其他view的view):拥有dispatchTouchEvent和onTouchEvent两个方法。

2.总结

view(和activity类似):

  • 触摸事件的传递流程是从dispatchTouchEvent开始的,如果不进行人为干预(也就是默认返回父类的同名函数),则事件将会依照嵌套层次从外层向内层传递,到达最内层的view时,就由它的onTouchEvent方法处理,该方法如果能够消费该事件,则返回true,否则返回false。这时事件会重新向外层传递,并由外层view的onTouchEvent方法进行处理,以此类推。

  • 如果事件在向内层传递过程中由于人为干预,事件处理函数返回true,则会导致事件提前被消费掉,内层view将不会收到这个事件。

  • view控件的事触发顺序是先执行onTouch方法,在最后才执行onClick方法。如果onTouch返回true,则事件不会继续传递,最后也不会调用onClick方法,否则事件继续传递。

ViewGroup:

  • 触摸事件的传递顺序是由activity到viewgroup,再由viewgroup递归传递给它的子view。

  • viewgroup通过onInterceptTouchEvent方法对事件进行拦截,如果该方法返回true,则事件不会继续传递给子view,返回false或者父类的同名函数,则事件会继续传递给子view。

  • 在子view中对事件进行消费后,viewgroup将接收不到任何事件。

3.流程图

转载https://www.jianshu.com/p/e99b5e8bd67b.png

相关文章

网友评论

      本文标题:Android触摸事件传递机制

      本文链接:https://www.haomeiwen.com/subject/tvyjtctx.html