android的事件分发机制相对来说是非常重要的一块内容,初学者在事件分发上面会踩很多坑,类似滑动冲突等,对事件自定义控件也有很大帮助,对这块内容的深入研究迫在眉睫。
一、关于View的一些知识点
1、首先讲一下View与ViewGroup的关系:View是所有控件的基类,控件可以直接继承自View,也可以继承ViewGroup。ViewGroup继承自View。
2、View的位置参数,left,top,right,bottom分别相对于父布局来说,相对位置的概念;android3.0版本之后增加了另外四个参数x,y,translationX,translationY,分别表示平移后View的左上角的X轴,Y轴,X轴偏移量,Y轴偏移量。公式表示如下:
x = left + translationX
y = top + translationY
3、MotionEvent:可以理解为事件对象,事件分发传递的事件对象,里面有两个对参数需要注意,分别是 getX/getY,和getRawX/getRawY,前者表示相对于当前View左上角的x和y,后者表示相对于屏幕左上角的x和y
4、TouchSlop:最小滑动距离,通过这个参数来判断是滑动还是点击事件,如果两次滑动事件的距离小于这个值就表示不是滑动事件,可以通过ViewConfiguration.get(getContext()).getScaledTouchSlop()获取这个值。
5、VelocityTracker:速度追踪,用于追踪手指在滑动过程中的速度;