当前位置:首页 > 未命名 > 正文内容

View的事件分发机制

u3blog8年前 (2016-03-09)未命名246

关于事件分发的几个重要函数

public boolean dispatchTochEvent(MotionEvent ev) 
顾名思义,用来分发事件,返回值代表是否消耗当前事件
public boolean onInterceptTouchEvent(MotionEvent event) 
表示是否拦截当前事件,如果已经拦截了,不会被再次调用
public boolean onTouchEvent(MotionEvent event)  
用来处理点击事件,返回值表示是否消耗事件,不消耗就不会再次接收到事件 上面三者的具体关系可以参考下面的伪代码
public boolean onTouchEvent(MotionEvent ev){
      boolean consume = false;
      if(onInterceptTouchEvent(ev)){
           consume = onTouchEvent(ev);
            }else{
                consume = child.dispatchTouchEvent(ev);
                }
               returen consume;
            }
有了以上伪代码我们就可以比较清楚的看到整个分发流程了,就这么简单。 在事件的末端是onTouchEvent,在内部,如果我们设置了onClickListener的话,就会被调用,可以见得,onClickListener的优先级其实是最低的。

事件传递的顺序

当点击事件产生之后,首先交给ACTIVITY->WINDOW->View 按照这个顺序依次传递到底部,如果底部无法处理,那么就返回给上一级处理,依次类推。

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=268

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。