网上已经有很多对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来处理。

更多相关文章

  1. Android处理ListView的条目长按事件
  2. Android监听底层事件的机制总结
  3. Android - ListActivity 单击事件的响应
  4. 总结系列-触摸屏事件的传递机制
  5. Android TouchEvent事件传递机制初识
  6. Android 触控事件解析 - Mastering The Android Touch System 笔

随机推荐

  1. ImageView的属性android:scaleType,即Imag
  2. android 2.3 修改 statusbar
  3. Android优秀开源项目(一)
  4. 通过AndroidTestCase来进行android 单元
  5. Android:WebView与Javascript交互(相互调用
  6. Android(安卓)RadioGroup 设置默认值之后
  7. Android(安卓)AndBox 安安卜1.3发布
  8. View类的XML属性、相关方法及说明
  9. Android(安卓)基础知识 学习总结
  10. Android在SDcard建文件夹(在Android中移动