美文网首页
触摸反馈的原理

触摸反馈的原理

作者: 王灵 | 来源:发表于2021-04-16 12:01 被阅读0次

    本文要叙述的是触摸事件在各种情况下的传递路径及逻辑

    一、3个最基本的相关函数

    • dispatchTouchEvent: 事件分发
    • onInterceptTouchEvent:事件拦截
    • onTouchEvent:事件处理
      view是没有onInterceptTouchEvent函数的

    在一个viewGroup中当事件传递到dispatchTouchEvent函数的时候,它会先调用自己的onInterceptTouchEvent函数,询问自己是否需要拦截这个事件。如果拦截则将事件交给自己的onTouchEvent去处理并返回处理结果;如果不拦截,则会将事件通过调用子view的dispatchTouchEvent传递给子view,判断返回值,如果是false还是要交给自己的onTouchEvent
    viewGroup的dispatchTouchEvent

    //只是大概这个意思,实际不是这么写的
        override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
            if (onInterceptHoverEvent(ev)) {
                return onTouchEvent(ev)
            } else if (子view的dispatchTouchEvent) {
                return true
            } else {
                return onTouchEvent(ev)
            }
        }
    

    view的dispatchTouchEvent

    //只是大概这个意思,实际不是这么写的
        override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
            return onTouchEvent(ev)
        }
    

    二、viewGroup的触摸拦截

    onInterceptTouchEvent不用在第一时间就返回true,而是在任意事件里需要拦截的时候返回true即可。不过需要做好拦截之后工作的准备。
    与之相关的还有一个函数parent.requestDisallowInterceptTouchEvent(true)在子view不希望父view及祖先view执行的时候调用

    相关文章

      网友评论

          本文标题:触摸反馈的原理

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