View事件分发

作者: 最黑暗的自己 | 来源:发表于2018-07-27 16:27 被阅读0次
    ViewGroup:
    DispatchTouchEvent 
    •   return true:表示该View内部消化掉了所有事件
    •   return false:表示事件在本层不再继续进行分发,并交由上层控件的onTouchEvent方法进行消费
    •   return super.dispatchTouchEvent(ev):默认事件将分发给本层的事件拦截onInterceptTouchEvent方法进行处理
    OnInterceptTouchEvent  
    •   return true:表示将事件进行拦截,并将拦截到的事件交由本层控件的onTouchEvent进行处理
    •   return false:表示不对事件进行拦截,事件得以成功分发到子View
    •   return super.onInterceptTouchEvent(ev):默认表示不拦截该事件,并将事件传递给下一层View的dispatchTouchEvent
    OnTouchEvent 默认false
    •   return true:表示onTouchEvent处理完事件后消费了此次事件
    •   return fasle:表示不响应事件,那么该事件将会不断向上层View的onTouchEvent方法传递,直到某个View的onTouchEvent方法返回true
    •   return super.dispatchTouchEvent(ev):表示不响应事件,结果与return false一样
    子View:
    DispatchTouchEvent 事件分发
    OnTouchEvent 默认true
    
    1、外部拦截法
    重写父ViewGroup
    2、内部拦截法
    重写子View
    getParent().requestDisallowInterceptTouchEvent();//通知父View拦截
    false 允许父拦截
    true 不拦截
    
    子view和父view要同时响应滑动事件,子view单独有点击事件
    同时设置ontouchlistener,子view在滑动事件中(motionevent.up)设置点击事件。
    

    相关文章

      网友评论

        本文标题:View事件分发

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