Android 事件分发机制总结

Android 事件分发机制

  1. viewonTouch执行先于onClick,如果同时定义了OnTouchListenerOnClickListenerOnTouch会优先执行,如果onTouch返回trueOnClick就不会执行了,OnTouch返回falseOnClick就会执行
  2. 事件分发流程:activity->viewgroup->view
  3. View group 处理分发是根据出发事件坐标点循环viewgroup子控件,判断子控件是否在范围内,如果是进入view的分发事件;PS:如果通过继承viewgroup自定义控件通过实现拦截函数可以控制事件是否向下传递,view 没有拦截方法
  4. onTouchEvent 返回true,代表事件被消费了,返回false,说明未被消费,如果给一个按钮同时设置了TouchListenerOnClickListener,如果onTouch方法返回true,则onClick不会被执行
  5. 如果自定义viewgroup,实现了onInterceptTouchEvent返回true,则事件不会向子view继续传递,而是直接进入viewgrouponTouchEvent
  6. 如果down 事件返回false,那么后续事件(moveup)不会被继续分发;
  7. viewgroup的子view的dispatchTouchEvent方法,如果没有对子view添加TouchListener或者OnclickListener,则dispatchTouchEvent 返回true 不会执行onTouchEvent 
     onTouchEvent 返回false的情况就是给控件设置了enable为false

 参考博客


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的点击事件分发是指在触摸屏幕上的某个位置按下并释放手指后,系统是如何将该事件分发给目标View的。点击事件分发涉及两个主要阶段:事件捕获和事件冒泡。 在事件捕获阶段,Android系统从顶层的父级View开始向下遍历整个View树,判断每个View是否需要处理该事件事件捕获是从父级View到子级View的遍历过程,直到找到最内层的可点击View或者没有View处理该事件为止。 接下来是事件冒泡阶段,触摸事件从最内层的View开始向上返回,依次经过包含它的每个父级View,并判断每个View是否需要处理该事件事件冒泡是从最内层View到最外层View的遍历过程,直到找到一个View处理该事件或者达到最外层的父级View为止。 在分发点击事件的过程中,每个View都可以通过重写相关的事件处理方法来拦截并处理事件,比如onTouchEvent()、onInterceptTouchEvent()和dispatchTouchEvent()等。这些方法可以根据需要进行定制,从而实现对事件的控制和处理。 事件分发机制是由ViewGroup和View共同实现的,通过相互协作完成点击事件的传递和处理。在此过程中,还有一些特殊情况需要考虑,比如View的可点击区域、事件的传递方向和拦截以及多个View同时处理点击事件等等。 总结来说,Android中的点击事件分发是通过事件捕获和事件冒泡的方式实现的,通过ViewGroup和View相互协作完成点击事件的传递和处理。开发者可以通过重写相关方法来控制和处理事件,实现自定义的交互逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值