在了解android view事件体系前,先了解下android UI界面架构图。


android View事件体系结论总结_第1张图片 android UI界面架构图

从上图可以简单总结出view触摸事件的传递顺序(假设点击到ViewGroup):
Activity--->PhoneWindow-->DecorView--->ContentView--->ViewGroup

View事件体系结论总结

  • 当所有事件方法按默认返回时,ACTION_DOWN其呈现U形分布,其余的ACTION_MOVE和ACTION_UP事件只会经过Activity.onTouchEvent,不会经过其他控件。

  • 当Activity.dispatchTouchEvent()返回true或false时,都表示事件被消费,不会向下传递了(只有默认返回super.dispatchTouchEvent()时,才会继续往下传递事件)。

  • ViewGroup.onInterceptTouchEvent()只有事件拦截作用,没有消费事件作用,即若有事件经过onInterceptTouchEvent()时,那么该事件肯定会继续进行传递,只是传递的方向受其返回值控制。

  • 当dispatchTouchEvent()和onTouchEvent()返回true时,表明消费了事件,则事件不再进行传递。其后的同一事件序列的ACTION_MOVE和ACTION_UP都会从上往下只传递到该控件上该方法(该控件下的子控件是无法再收到任何事件的),如果该控件对MOVE和UP事件返回false,则其父控件的onTouchEvent并不会被调用,最终这些消失的事件都交给Activity.onTouchEvent处理

  • 当dispatchEvent()和onTouchEvent()返回false时,都会立即回掉父控件的onTouchEvent()。

  • onTouchListener.onTouch()会优先于onTouchEvent被调用,且只有当onTouchListener.onTouch()返回false时,onTouchEvetn才会被调用,然后才能调用onClickListener.onClick()。

更多相关文章

  1. 常用控件应用之文本框(TextView)特效
  2. android View长按事件简单写法
  3. android 文本框部分文字的点击事件
  4. Android 中input学习--取得input事件
  5. Android事件分发机制完全解析(二)
  6. android学习小结3-各种控件使用方式DEMO
  7. ListView中点击事件无法响应

随机推荐

  1. android 学习笔记(三)
  2. android EditText 去掉焦点
  3. android存储空间的分类
  4. Android framework系统手势
  5. Android 权限
  6. Android(安卓)开发简介
  7. android_shape
  8. Android中配置单元测试
  9. Android 实现自动接听和挂断电话功能
  10. #Android 获取(keystore)Maps API Key