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

触摸反馈的原理

作者: 王灵 | 来源:发表于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