事件分发的总结

1.一个事件序列从手指接触屏幕到手指离开屏幕,在这个过程中产生一系列的事件,以down事件开始,中间含有不定数的move事件,以up事件结束.

2.正常情况下,一个事件序列只能被一个View拦截并消耗

3.某个View一旦决定拦截,那么这个事件当都由他的ontouchEvent处理,并且它的onInterceptTouchEvent不会再调用

4.某个View一旦开始处理事件 如果它不消耗action_down事件 ,那么同一事件序列中的其他事件都不会再交给他处理,兵重新交由他的父元素处理(父元素的onTouchEvent)

5.事件的传递过程是由外向内的 ,即事件总是先传递给父元素,然后再由父元素分发给子View ,通过requestDisallowInterceptTouchEvent方法可以在子View中干预父元素的事件分发过程,但是Action_down除外

6.ViewGroup默认不拦截任何事件,即onIterceptTouchEvent默认返回false.View没有onInterceptTouchEvent方法,一旦有点击事件传递给他,那么他的onTouchEvent方法就会被调用

7.View的onTouchEvent默认会消耗事件(返回true),除非它是不可点击的(clickable和longClickable同为false) ,View的longClickable默认都是false,clickable要分区块,比如button的clickable默认为true ,TextView的clickable默认为false

8.View的enable属性不会影响onTouchEvent的默认返回值,哪怕一个View的disable状态,只要他的clickable或者longClickable又一个为true,那么它的onTouchEvent就返回true

9.onClick会响应的前提是当前View是可点击的,并且受到了Action_down和Action_Up事件,并且受长按事件影响,当长按事件返回true时,onclick不会响应

10.onLongClick再Action_down里判断是否进行响应,要想执行长按事件该View必须是longClickable的并且设置了onLongClickListener

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值