关于android的view触摸事件

android的view事件分发机制,仅作为笔记记录

设定view有触摸事件,分发事件,拦截事件分别为T,D,I,再设有一套布局有三层结构,根目录的rootView,第二层目录parentView,第三层为最后一层即最顶层的子布局chilView

分别写三个自定义view,写上dispatchTouchEventonInterceptTouchEventonTouchEvent方法,仅用super方法,然后运行起来测试点击事件

第一种情况 ,dispatchTouchEventonInterceptTouchEventonTouchEvent不更改方法,看看三层布局的此三个方法的执行顺序先后顺序为

rootView(D)->rootView(I)->parentView(D)->parentView(I)->chilView(D)->chilView(I)->chilView(T)->parentView(T)->rootView(T)

二、将rootView(D)的返回值改为false,此时会发现整个点击事件就此消失

三、rootView(I)的返回值 改为true,此时点击事件就在rootView这层终止不再继续往子布局传递,而此次的点击事件由rootView(T)来进行执行rootView(D)->rootView(I)->rootView(T)

四、将parentView(D)返回值改为false,此次点击事件在parentView层终止,由rootView(T)进行执行

五、将parentView(I)返回值改为true,此次点击事件在parentView层终止,与第四种情况 不同的是由parentView(T)进行执行

六、同理chilView(I),chilView(T)这两个方法的返回值和四,五点相似

七、如果把chilView(T)的值改为true,则事件会重新执行rootView(D)->rootView(I)->parentView(D)->parentView(I)->chilView(D)->chilView(T),此次没有再调用chilView(I)方法


个人理解,dispatchTouchEvent为整个事件的总开关,此方法的返回值变成false,则整个事件就消失,onInterceptTouchEvent为二级开关



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值