美文网首页
View的事件分发

View的事件分发

作者: dhhuanghui | 来源:发表于2016-10-30 21:20 被阅读19次

    看了《Android开发艺术探索》加上自己的一些实践,对View的事件分发做个总结记录:

    @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            boolean isConsumed = false;
            if(onInterceptTouchEvent(ev)){
                isConsumed = onTouchEvent(ev);
            }else{
                isConsumed = child.dispatchTouchEvent(ev);
            }
            return isConsumed;
        }
    

    1、ViewGroup有dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent,View则没有onInterceptTouchEvent这个方法;
    2、如果ViewGroup的onInterceptTouchEvent返回true,则事件不会传递给子View,事件会传递给当前ViewGroup的onTouchEvent方法去处理;如果ViewGroup的onInterceptTouchEvent返回false,那么事件则会继续往下传递给子View,这时候不会回调ViewGroup的onTouchEvent方法。
    3、如果View设置了OnTouchListener,则如果Listener的onTouch返回了true,则View的onTouchEvent方法不会被回调,如果onTouch返回false,则View的onTouchEvent方法会被回调;
    4、如果View的onTouchEvent方法返回false,那么这个View的父容器的onTouchEvent会被调用。

    相关文章

      网友评论

          本文标题:View的事件分发

          本文链接:https://www.haomeiwen.com/subject/eamyuttx.html