事件分发

来源:互联网 发布:姜峰淘宝的手机怎么样 编辑:程序博客网 时间:2024/05/16 05:17


1.触摸事件的ACTION
ACTION_DOWN:手指触摸屏幕最早触发一个ACTION
ACTION_MOVE:
ACTION_UP:

2.触摸事件涉及到的控件类型:
Activity:最先获取到触摸事件的控件
ViewGroup:容器控件(Relativilayout,LinearLayout等)
子view:不能放置控件的控件(TextView,Button等)

3.触摸事件的传递方向:
Activity==》ViewGroup==》子view==》ViewGroup==>Activity

4.触摸事件传递时涉及到的方法:
dispatchTouchEvent:事件分发,具有事件分发和消费的功能

onInterceptTouchEvent:事件拦截,具有事件拦截的功能,没有消费功能

onTouchEvent:事件响应,具有事件消费的功能

5.触摸事件返回值对事件的影响
dispatchTouchEvent:

true:会消费掉当前事件,事件将不会继续向下传递

false:不会消费当前事件,并且会将当前事件分发到上一层控件的onTouchEvent中

super:按照默认情况走完整个流程(具体控件,具体分析)

onInterceptTouchEvent:

true:会拦截所有子控件的事件,并且直接传递到自己的onTouchEvent中

false:按照默认情况走完整个流程(不会对事件的走向产生影响)

super:按照默认情况走完整个流程(具体控件,具体分析)

onTouchEvent:

true:会消费掉当前事件,事件将不会继续向下传递

false:按照默认情况走完整个流程(不会对事件的走向产生影响)

super:按照默认情况走完整个流程(具体控件,具体分析)‘
1.触摸事件的ACTION
ACTION_DOWN:手指触摸屏幕最早触发一个ACTION
ACTION_MOVE:
ACTION_UP:

2.触摸事件涉及到的控件类型:
Activity:最先获取到触摸事件的控件
ViewGroup:容器控件(Relativilayout,LinearLayout等)
子view:不能放置控件的控件(TextView,Button等)

3.触摸事件的传递方向:
Activity==》ViewGroup==》子view==》ViewGroup==>Activity

4.触摸事件传递时涉及到的方法:
dispatchTouchEvent:事件分发,具有事件分发和消费的功能

onInterceptTouchEvent:事件拦截,具有事件拦截的功能,没有消费功能

onTouchEvent:事件响应,具有事件消费的功能

5.触摸事件返回值对事件的影响
dispatchTouchEvent:

true:会消费掉当前事件,事件将不会继续向下传递

false:不会消费当前事件,并且会将当前事件分发到上一层控件的onTouchEvent中

super:按照默认情况走完整个流程(具体控件,具体分析)

onInterceptTouchEvent:

true:会拦截所有子控件的事件,并且直接传递到自己的onTouchEvent中

false:按照默认情况走完整个流程(不会对事件的走向产生影响)

super:按照默认情况走完整个流程(具体控件,具体分析)

onTouchEvent:

true:会消费掉当前事件,事件将不会继续向下传递

false:按照默认情况走完整个流程(不会对事件的走向产生影响)

super:按照默认情况走完整个流程(具体控件,具体分析)




个人总结

    首先事件是从最外层的Activity传递过来,viewGroup会以此把事件遍历给每一个子控件、如果子控件也没有消费掉,则会,把事件依次返回
给父控件、最后传给Activity。

如果viewGroup的dispatchTouchEvent返回true,那么它就不会向下分发事件、会自己消费事件,viewGroup的dispatchTouchEvent的ACTION_UP会执行,事件止于viewGroup的dispatchTouchEvent,

如果viewGroup的dispatchTouchEvent返回false,它会向下分发事件,下面执行onInterceptTouchEvent事件

    true:两个作用。1,拦截事件,事件不会传递给子控件,2、自己消费事件、会执行自己的onTouchEvent();
    false: 不会拦截事件、事件向子控件传递。

如果传递到子控件 子控件 onTouchEvent();返回true,则会消费掉事件。

如果给一个view设置了onTrouch()事件,这个onTouch事件 是先于onTouchEvent执行的,如果onTrouch()返回true,则不会,执行
onTouchEvent(),onClick()又是依赖于onTouchEvent(),所以onClick()也不会执行。只有onTrouch()返回false,才会执行
onTouchEvent,onTouchEvent(),返回true,才会执行view的onClick()时间。



1.触摸事件的ACTION
ACTION_DOWN:手指触摸屏幕最早触发一个ACTION
ACTION_MOVE:
ACTION_UP:

2.触摸事件涉及到的控件类型:
Activity:最先获取到触摸事件的控件
ViewGroup:容器控件(Relativilayout,LinearLayout等)
子view:不能放置控件的控件(TextView,Button等)

3.触摸事件的传递方向:
Activity==》ViewGroup==》子view==》ViewGroup==>Activity

4.触摸事件传递时涉及到的方法:
dispatchTouchEvent:事件分发,具有事件分发和消费的功能

onInterceptTouchEvent:事件拦截,具有事件拦截的功能,没有消费功能

onTouchEvent:事件响应,具有事件消费的功能

5.触摸事件返回值对事件的影响
dispatchTouchEvent:

true:会消费掉当前事件,事件将不会继续向下传递

false:不会消费当前事件,并且会将当前事件分发到上一层控件的onTouchEvent中

super:按照默认情况走完整个流程(具体控件,具体分析)

onInterceptTouchEvent:

true:会拦截所有子控件的事件,并且直接传递到自己的onTouchEvent中

false:按照默认情况走完整个流程(不会对事件的走向产生影响)

super:按照默认情况走完整个流程(具体控件,具体分析)

onTouchEvent:

true:会消费掉当前事件,事件将不会继续向下传递

false:按照默认情况走完整个流程(不会对事件的走向产生影响)

super:按照默认情况走完整个流程(具体控件,具体分析)
0 0
原创粉丝点击