事件分发我们首先要了解什么是事件分发:
事件分发是我们在操作屏幕点击,滑动,抬起时需要的一种机制,一般来说是在线程中进行
首先当我们触摸屏幕的时候,会首先执行Activity的dispatchTouchEvent 这一步不管返回是true或false
都会执行当前的方法
我们继续往下走会执行ViewGroup的dispatchTouchEvent 当这个方法为true的时候我们会执行当前的方法,当这个方法为false的时候我们会返回到Activity的onToouchEvent
我们继续往下,会执行到ViewGroup的onInterceptTouchEvenet 当这个方法为true的时候我们会执行ViewGroup的onTouchEvent 如果为false的话才会继续向下执行,如图所示
onTouch和onTouchEvent有什么区别,又该如何使用?
从源码中可以看出,这两个方法都是在View的dispatchTouchEvent中调用的,onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行。
什么是ViewGroup?它和普通的View有什么区别?
顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子VewGroup,是Android中所有布局的父类或间接父类,像LinearLayout、RelativeLayout等都是继承自ViewGroup的。但ViewGroup实际上也是一个View,只不过比起View,它多了可以包含子View和定义布局参数的功能。ViewGroup继承结构示意图如下所示:
可以看到,我们平时项目里经常用到的各种布局,全都属于ViewGroup的子类。