android 拦截机制的分析

      平常经常用到 onTouchEvent()这个方法,在重写view对触摸事件的处理时返回true对触摸事件进行响应处理.......

       今天对android拦截机制做一下总结,形象比喻来说这拦截机制像一个效能好高的机制一样。

        假设显示在屏幕中有三层view,第一层viewgroupA、第二层viewgroupB,第三层就是我们想看到的myview,当我们重新这些view时发现viewgroup中有三个处理触摸事件的方法dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()三个方法;重写myview的时候发现只有dispatchTouchEvent()和OntouchEvent()两个方法。

        好了好戏开场了,当我们点击屏幕的时候最先感应到点击事件的是viewgroupA(第一层),viewgroupA对事件迅速做出处理:先经过方法dispatchTouchEvent()分发事件吧,分配之后先自己考虑一下经过方法onInterceptTouchEvent(),看看自己能不能做——1)false不能做,接着往下走分给viewgroupB对事件进行处理同样先经过方法dispatchTouchEvent()分发事件吧,分配之后先经过方法onInterceptTouchEvent()自己考虑一下,看看自己能不能做,接着返回false自己不能做,事件终于落到了myview的头上芝麻的大的官也有模有样的学者对事件进行分发onInterceptTouchEvent()没人理没人抢好了自己直接干吧myview的onTouchEvnt()方法上场,myview是个低调的人做完事不要求领赏onTouchEvnt()方法返回true不告诉上级整个方法走完了,myview是个高调的人做完了给上级反映一下返回false让上夸奖一下,经过viewgroupB的onTouchEvnt()然后viewgroupB在看看myview做的怎么样啊,好了(返回false)直接反应给viewgroupA接着冒名顶替,不好(true)直接给你拦截掉。。。

2)返回true,viewgroupA自己能做,好了直接由viewgroupA的onTouchEvent()方法进行处理完事。。。

3)返回false,viewgroupA没有拦截交给viewgroupB处理,到viewgropeB的onInterceptTouchEvent时候返回true拦截掉可以自己干,进入viewgroupB的ontouchEvent的方法进行处理,处理完成选择告诉不告诉viewgroupA,ontouchEvent返回false告诉viewgroupA,进入viewgroupA的ontouchEvent的进行处理。

总结:情况比较多不做一一举例子,简单来讲就是分配事件的时候经过dispatchTouchEvent(),在经过viewgroup的onInterceptTouchEvent()看看是拦截掉自己做还是给下一级别做。

做事情的时候就是onTouchEvnt(),通过返回true(不告诉上级)做了事情不炫耀低调行的;返回false(告诉上级)做了事情很高调告诉上级,再有上级同样的处理方法.....


     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值