Android知识回顾之事件分发机制

        点击事件的分发过程由三个很重要的方法来共同完成:dispatchTouchEvent,onInterceptTouchEvent和onTouchEvent,

        dispathchTouchEvent用来进行事件的分发,如果事件可以传递给当前view,那么此方法一定会被调用,返回结果受到当前view的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是否消耗当前事件。

        onInterceptTouchEvent用来判断是否拦截某个事件,如果当前view拦截了某个事件,那么在同一个事件序列当中,此方法不会被再次调用,返回结果表示是否拦截当前事件。

        onTouchEvent在dispatchTouchEvent方法中调用,用来处理点击事件,返回结果表示是否消耗当前事件,如果不消耗,则在同一个事件序列中,当前View无法再次接到事件。

       当我们为view设置onTouchListener和OnclickListener时,onclik,onTouch,OntouchEvent,调用顺序是什么样的呢?首先会调用onTouch,这个事件如何处理要看onTouch的返回值,如果返回false,当前view的onTouchEvent方法会被调用,如果返回true,那么oTouchEvent不会被调用,而在onTouchEvent方法中,如果设置有OnClickListener,那么onclik方法才会被调用。可以看出优先级最低的是OnclickListener。

      当一个点击事件产生后,它的传递顺序:Activity->Window->View.即不处理就将它传下去。如果都不处理就由activity处理,即activity的onTouchEvent方法被调用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值