再回忆onInterceptTouchEvent和onTouchEvent

原来转过一篇文章,是关于onInterceptTouchEvent和onTouchEvent的,时间久了都忘了差不多了,今天再重新回忆了一下,感觉理解又加深了一点。

测试的布局还是原来的,如下图所示:LayoutView1和LayoutView2都是LinearLayout, MyTextView是TextView.


情况一:
 LayoutView1和LayoutView2中的onInterceptTouchEvent的down事件均返回false,onTouchEvent
处理时间均返回true.MyTextView的onTouchEvent返回true.
04-11 03:58:42.620: DEBUG/LayoutView1(614): onInterceptTouchEvent action:ACTION_DOWN
04-11 03:58:42.620: DEBUG/LayoutView2(614): onInterceptTouchEvent action:ACTION_DOWN
04-11 03:58:42.620: DEBUG/MyTextView(614): onTouchEvent action:ACTION_DOWN
04-11 03:58:42.800: DEBUG/LayoutView1(614): onInterceptTouchEvent action:ACTION_MOVE
04-11 03:58:42.800: DEBUG/LayoutView2(614): onInterceptTouchEvent action:ACTION_MOVE
04-11 03:58:42.800: DEBUG/MyTextView(614): onTouchEvent action:ACTION_MOVE
…… //省略过多的ACTION_MOVE
04-11 03:58:43.130: DEBUG/LayoutView1(614): onInterceptTouchEvent action:ACTION_UP
04-11 03:58:43.130: DEBUG/LayoutView2(614): onInterceptTouchEvent action:ACTION_UP
04-11 03:58:43.150: DEBUG/MyTextView(614): onTouchEvent action:ACTION_UP
    可以看出down事件没有经过LayoutView1和LayoutView2的onTouchEvent,而直接到了目标控件MyTextView.
  因为在LayoutView1和LayoutView2的onInterceptTouchEvent的down均返回false.即不拦截这个事件,
  所以会先向下传递,直到传递给了MyTextView, MyTextView中onTouchEvent返回了true,即消费了事件,所以后续
  的MOVE和UP事件不会传递给LayoutView2和LayoutView1的onTouchEvent。

情况二:当LayoutView1的onInterceptTouchEvent()处理down返回true
04-11 03:09:27.589: DEBUG/LayoutView1(446): onInterceptTouchEvent action:ACTION_DOWN
04-11 03:09:27.589: DEBUG/LayoutView1(446): onTouchEvent action:ACTION_DOWN
04-11 03:09:27.629: DEBUG/LayoutView1(446): onTouchEvent action:ACTION_MOVE
04-11 03:09:27.689: DEBUG/LayoutView1(446): onTouchEvent action:ACTIO

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值