android onInterceptTouchEvent和onTouchEvent的执行关系

文章详细探讨了DragHorizontalScrollView中onInterceptTouchEvent对子布局触控事件的影响,包括不同情况下子布局是否能接收到ACTION_DOWN、ACTION_MOVE和ACTION_UP事件,以及自定义布局的影响。
摘要由CSDN通过智能技术生成

DragHorizontalScrollView
一.子布局没有自定义布局(只包含android原生布局)
onInterceptTouchEvent不拦截 子布局可以点击
-------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收
I/>>lilei>>DragHorizontalScrollView(23283): ****return false onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(23283): ***#### onTouchEvent return false action:ACTION_DOWN
-------onInterceptTouchEvent不拦截 part2--------onTouchEvent接收
I/>>lilei>>DragHorizontalScrollView(26256): ****return false onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(26256): ***#### onTouchEvent return true action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(26256): ***#### onTouchEvent return true action:ACTION_MOVE
I/>>lilei>>DragHorizontalScrollView(26256): ***#### onTouchEvent return true action:ACTION_UP

onInterceptTouchEvent拦截 子布局不可以点击
------onInterceptTouchEvent拦截 part1-------onTouchEvent不接收
I/>>lilei>>DragHorizontalScrollView( 1968): ****return true onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView( 1968): ***#### onTouchEvent return false action:ACTION_DOWN
------onInterceptTouchEvent拦截 part2-------onTouchEvent接收
I/>>lilei>>DragHorizontalScrollView(31259): ****return true onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(31259): ***#### onTouchEvent return true action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(31259): ***#### onTouchEvent return true action:ACTION_MOVE
I/>>lilei>>DragHorizontalScrollView(31259): ***#### onTouchEvent return true action:ACTION_UP

二.子布局有自定义布局
onInterceptTouchEvent不拦截 子布局可以点击
-------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收
I/>>lilei>>DragHorizontalScrollView(14163): ****return false onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(14163): ****return false onInterceptTouchEvent 222 action:ACTION_MOVE
I/>>lilei>>DragHorizontalScrollView(14163): ****return false onInterceptTouchEvent 222 action:ACTION_UP
-------onInterceptTouchEvent不拦截 part2---------onTouchEvent接收
I/>>lilei>>DragHorizontalScrollView(14163): ****return false onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(14163): ****return false onInterceptTouchEvent 222 action:ACTION_MOVE
I/>>lilei>>DragHorizontalScrollView(14163): ****return false onInterceptTouchEvent 222 action:ACTION_UP

onInterceptTouchEvent拦截 子布局不可以点击
------onInterceptTouchEvent拦截 part1-------onTouchEvent不接收
I/>>lilei>>DragHorizontalScrollView(30046): ****return true onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(30046): ***### onTouchEvent return false action:ACTION_DOWN isMove:true
------onInterceptTouchEvent拦截 part2-------onTouchEvent接收
I/>>lilei>>DragHorizontalScrollView(31067): ****return true onInterceptTouchEvent 222 action:ACTION_DOWN
I/>>lilei>>DragHorizontalScrollView(31067): ***### onTouchEvent return true action:ACTION_DOWN isMove:true
I/>>lilei>>DragHorizontalScrollView(31067): ***### onTouchEvent return true action:ACTION_UP isMove:false

综上所述,
onInterceptTouchEvent不拦截(return fasle) 子布局可以点击
onInterceptTouchEvent拦截(return true) 子布局不可以点击
若父布局不包含自定义字布局:则不论父布局onInterceptTouchEvent 是否拦截,父布局都可以获取到onTouchEvent事件
若父布局包含自定义字布局:若父布局onInterceptTouchEvent拦截,父布局可以获取到onTouchEvent事件;否则父布局获取不到onTouchEvent事件
假设一个布局可以获取onTouchEvent事件:若onTouchEvent接收(return true),则onTouchEvent可以获取到所有事件(DOWN,MOVE,UP);
若onTouchEvent不接收(return false),则只能获取到第一次的DOWN事件,后续的事件(MOVE,UP)会由onInterceptTouchEvent接收.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值