【Android】事件分发机制 + OnLongClickListener长按事件返回值

事件分发机制,包括:

  1. Activity事件分发流程
  2. ViewGroup事件分发流程
  3. View事件分发流程

1. Activity事件分发流程

在这里插入图片描述

2. ViewGroup事件分发流程

在这里插入图片描述
ViewGroup中的dispatchTouchEvent函数做的3件事:

  1. 去判断是否需要拦截事件
  2. 在当前ViewGroup中,找到用户真正点击的View
  3. 分发事件到View上

3. View事件分发流程

在这里插入图片描述

默认的事件分发流程:

MainActivity:dispatchTouchEvent

MyViewGroup:dispatchTouchEvent

MyViewGroup:onInterceptTouchEvent  验证事件是否需要去拦截(默认不拦截)

MyView:dispatchTouchEvent

MyView:onTouchEvent  默认不消费事件

MyViewGroup:onTouchEvent  默认不消费事件

MainActivity:onTouchEvent

同一个事件序列,如果子View(或ViewGroup)没有处理该事件(没有消费事件),那么后续事件就不会再传递到子View中。
会在MainActivity:dispatchTouchEventMainActivity:onTouchEvent之间传递

相关问题:

android OnLongClickListener长按事件返回值

public boolean onLongClick(View v)
  参数v:参数v为事件源控件,当长时间按下此控件时才会触发该方法。
  返回值:该方法的返回值为一个boolean类型的变量,当返回true时,表示已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理;当返回false时,表示并没有完全处理完该事件,更希望其他方法继续对其进行处理。

如果将onLongClick返回false,那么执行完长按事件后,还有执行单击事件。
如果返回true,只执行长按事件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值