您的位置:首页 > 移动开发 > Android开发

Android事件传递机制分析

2018-03-04 21:41 183 查看
一、Android最基本的屏幕操控事件
down:按下事件。
move:移动事件。
up:离开事件。
二、在总结的事件传递机制时,先介绍一下ViewGroup与View有关事件传递的方法
ViewGroup有dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent方法 
View有dispatchTouchEvent、onTouchEvent方法

dispatchTouchEvent:触摸事件分发。

onInterceptTouchEvent:触摸事件拦截。返回true时,拦截该动作;返回false时,不拦截该动作。

onTouchEvent:触摸事件消费。返回true时,消耗该动作;返回false时,不消耗该动作。

三、事件分发流程图 
分发的是down事件,down事件的分发是为了寻找一个可以处理完整事件的控件,down被处理move和up也就被处理了注:此事件分发图是不包括拦截的 


 
解释:down事件从activity开始往下层子控件分发,分发到没有子控件的控件view,不能继续往下分发了,所以view开始调用onTouchEvent方法判断自己是否能处理该事件,若返回true代表消耗了该事件,view的dispatchTouchEvent方法也返回true,事件结束;若返回false,代表处理不了这个事件,则down事件往上返回到viewgroup2,viewgroup2的处理同view,此处不再赘述。带有拦截(onInterceptEvent)的事件分发,返回true表示拦截,false表示不拦截。拦截的意思就是强制停止向下分发,此时该控件将要判断自身是否能处理该事件,如果处理不了就继续向上返回,返回让上一级处理,如果该控件可以处理该事件则事件被消耗,事件结束。程序运行截图


四、 onTouch方法的返回值说明 return true:事件被消耗,不会继续向下传递。return false:事件没有被消耗。虽然 onTouch事件中没有super.onTouch()方法,但是该事件还是会继续传递,给该控件的其他方法使用,或给其他的控件使用。
转载自:http://blog.csdn.net/z1941563559/article/details/54973886
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: