对android中事件的分发的理解
16lz
2021-01-23
网上已经有很多对android中事件的分发的文章了,花了几天时间好好的整理了下这方面的知识,现在做一个总结,算是加深理解,能够给大家一点帮助就更好的了。
在android中涉及到事件处理的有一下几个地方:
Activity中的
public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEvent event)
ViewGroup中的
public boolean dispatchTouchEvent(MotionEvent event)public boolean onInterceptTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEvent event)
View中的
public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEvent event)
首先,当我们触摸屏幕的时候,Activity中的dispatchTouchEvent接受到事件,然后分发个顶层的ViewGroup的dispatchTouchEvent,在dispatchTouchEvent会根据调用onInterceptTouchEvent的返回值判断是否需要分发给子View,如果继续分发则传到子View的dispatchTouchEvent中,最后调用onTouchEvent来处理事件,如果onTouchEvent返回true,则事件被消耗,否则就由上级ViewGroup的onTouchEvent来处理,以此类推,如果没有任何View处理,则最后由Activity的onTouchEvent来处理。
更多相关文章
- Android处理ListView的条目长按事件
- Android监听底层事件的机制总结
- Android - ListActivity 单击事件的响应
- 总结系列-触摸屏事件的传递机制
- Android TouchEvent事件传递机制初识
- Android 触控事件解析 - Mastering The Android Touch System 笔