view事件分发机制
2016-12-14 10:42:20 0 举报
View事件分发机制是Android应用中非常重要的一个概念,它用于处理用户与界面交互所产生的各种事件,包括触摸、按键、滚屏等。当一个事件发生时,系统会将该事件传递给当前拥有焦点的View对象,然后由该View对象开始进行事件处理。如果该View对象无法处理该事件,则将其传递给它的父容器ViewGroup对象进行处理。这个过程会一直向上传递,直到找到能够处理该事件的View或ViewGroup对象为止。同时,View事件分发机制还支持拦截和消费事件,使得开发者可以在事件发生时进行自定义处理,从而实现更加灵活的应用交互效果。
作者其他创作
大纲/内容
A
B的dispatchTouchEvent(MotionEvent ev){onInterceptTouchEvent(ev)返回false}
B
事件拦截机制是由父视图开始发起对事件的拦截(出事了老子先上,儿子稍后)。参照上图当手指触摸事件时,父视图A首先发起对该起事件的拦截,如果A拦截失败,就交给它的子视图B进行拦截;如果B拦截失败就交给B的子视图C再进行拦截..直到某一子视图对该次事件拦截成功
C的dispatchTouchEvent(MotionEvent ev){onInterceptTouchEvent(ev)返回false}
D
C
A的dispatchTouchEvent(MotionEvent ev){onInterceptTouchEvent(ev)返回false}
在A B C D的onInterceptTouchEvent和onTouchEvent都返回false的情况下,方法执行的顺序依次为A.onInterceptTouchEvent--B.onInterceptTouchEvent--C.onInterceptTouchEvent--D.touchEvent(最深的子视图没重写onInterceptTouchEvent)--C.touchEvent--B.touchEvent--A.touchEvent.也就是说拦截事件是父视图优先有子视图进行拦截,处理事件是子视图优先父视图进行处理。 总结:onInterceptTouchEvent负责对事件进行拦截,拦截成功后交给最先遇到onTouchEvent返回true的那个view进行处理。
0 条评论
下一页