android事件分发机制

一、事件分发的对象是谁 --> 点击事件(Touch事件)

        当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(Touch事件)。Touch事件相关细节(发生触摸           的位置、时间、历史记录、手势动作等)被封装成MotionEvent对象。

        主要发生的Touch事件有如下四种:

        MotionEvent.ACTION_DOWN:按下View(所有事件的开始)
        MotionEvent.ACTION_MOVE:滑动View
        MotionEvent.ACTION_CANCEL:非人为原因结束本次事件

        MotionEvent.ACTION_UP:抬起View(与DOWN对应)

        事件列:从手指接触屏幕至手指离开屏幕,这个过程产生的一系列事件 任何事件列都是以DOWN事件开始,UP事件结               束,  中间有无数的MOVE事件,如下图:

       android事件分发机制_第1张图片

          即当一个MotionEvent 产生后,系统需要把这个事件传递给一个具体的 View 去处理,

二、事件分发的本质 --> 将点击事件(MotionEvent)向某个View进行传递并最终得到处理,即当一个点击事件发生后,系统需要将这个事件传递给一个具体的View去处理。

三、事件在对象间的传递 --> 传递顺序是:Activity(Window) -> ViewGroup -> View

android事件分发机制_第2张图片

*注:View是所有UI组件的基类。

        ViewGroup是容纳UI组件的容器,即一组View的集合(包含很多子View和子VewGroup)。

                ViewGroup本身也是从View派生的,即ViewGroup是View的子类是Android所有布局的父类或间接父类:项目用到                   的布局(LinearLayout、RelativeLayout等),都继承自ViewGroup,即属于ViewGroup子类。与普通View的区                     别:ViewGroup实际上也是一个View,只不过比起View,它多了可以包含子View和定义布局参数的功能。

     android事件分发机制_第3张图片

四、事件分发的方法 --> dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()

     android事件分发机制_第4张图片

        *触发顺序                 

        android事件分发机制_第5张图片

        *图解说明

android事件分发机制_第6张图片

大神链接:了解更多详情点击此处

你可能感兴趣的:(Android基础)