Android事件传递

1,事件传递机制------源码

2,处理事件的冲突

事件: Activity,View,ViewGroup,Key,

一,View的事件分发

结论:

     1, 控件的Listener事件触发顺序是先onTouch,再onClick

     2,控件的onTouch返回true,将会onClick事件没有了----组织了事件的传递,

           返回false,才会传递onClick事件(才会传递up事件)    

源码依据:

         View的事件分发。

         1,dispatchTouchEvent();

         2,onTouchListener----->onTouch方法

         3,onTouchEvent

         4,onClickListener----->onClick方法

结论:

      1,如果onTouchListener的onTouch方法返回了true,那么view里面的onTouchEvent就不会被调用了。

顺序:dispatchTouchEvent-->onTouchListener----return false--->onTouchEvent

      2,如果view为disenable,则:onTouchListener里面不会执行,但是会执行onTouchEvent(event)方法

      3,OnTouchEvent方法中的ACTION_UP分支中触发onClick事件

            oTouchListener--->onTouch返回true,消耗此事件,down,但是up事件是无法到达onClickListener

            oTouchListener--->onTouch返回false,不消耗此事件。

二,ViewGroup+View的事件分发。

      ViewGroup---->View

              1,dispatchTouchEvent()

              2,onTouchEvent()

              3,onInterceptTouchEvent() 拦截触摸事件

1,先接触事件的父容器

2,顺序:dispatchTouchEvent()-->onInterceptTouchEvent()-->onTouchLinstener----return false----->onTouchEvent

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值