• 安卓触摸事件调度顺序


    //总结:
    //View 触摸有:dispatchTouchEvent(分发触摸事件) 和onTouchEvent(消费触摸事件) 两个。
    // View Group 触摸有:dispatchTouchEvent(分发触摸事件) 和onTouchEvent(消费触摸事件) onInterceptTouchEvent(拦截触摸事件)

    // 返回值含义:
    //onInterceptTouchEvent 当前是否拦截当前事件
    //onTouchEvent 是否消费当前事件
    //dispatchTouchEvent:当前事件是否已经被消费了。该方法是调用了onTouchEvent返回的 dispatchTouchEvent返回值的作用是用于标志这个事件是否“消费了”, 无论是自己或者下面的子一级用掉了都算是消费掉。*

    //viewGroup中如果使用onInterceptTouchEvent 拦截事件后将不会分发给子View,如果子view 消费过Down事件则会给子view一个cancle 事件

    //如果子View onTouchEvent不消费触摸事件。则会回到ViewGroup的onTouchEvent

    //什么情况会产生:ACTION_CANCEL
    //当view 消费Donw 后如果后续的Move 或者Up 被拦截后产生

    //默认
    // ViewGroup.dispatchTouchEvent ---->ViewGroup.onInterceptTouchEvent ----> view.dispatchTouchEvent ---->view.onTouchEvent ---->ViewGroup.onTouchEvent
    //Donw 时候回就直接拦截事件的情况
    //ViewGroup.dispatchTouchEvent ----> ViewGroup.onInterceptTouchEvent ---->ViewGroup.onTouchEvent
    //移动时候拦截
    // ViewGroup.dispatchTouchEvent(down) ----> ViewGroup.onInterceptTouchEvent(down) ----> view.dispatchTouchEvent(down) ---->view.onTouchEvent(down)---> ViewGroup.dispatchTouchEvent(move) ----> ViewGroup.onInterceptTouchEvent(move)----> view.dispatchTouchEvent(cancle) ---->view.onTouchEvent(cancle)
    //view 消费事件的情况
    //ViewGroup.dispatchTouchEvent ---->ViewGroup.onInterceptTouchEvent ----> view.dispatchTouchEvent ---->view.onTouchEvent


    //如果有setOnTouchListener 情况:
    //dispatchTouchEvent->onTouch->onTouchEvent

    //总结:view 事件分发是通过dispatchTouchEvent执行的。dispatchTouchEvent会调用onInterceptTouchEvent和onTouch以及onTouchEvent
  • 相关阅读:
    面试突击44:volatile 有什么用?
    面试突击42:synchronized和ReentrantLock有什么区别?
    面试突击45:为什么要用读写锁?它有什么优点?
    微信内打开链接,跳转到公众号关注页面
    阿里流水线使用教程
    windows自带 扫描修复系统
    20年前的网站页面
    微服务之 Consul 单机版到集群搭建详细步骤【转】
    iOS修改项目名称
    从零开始学YCFramework之初步
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/14891515.html
Copyright © 2020-2023  润新知