zoukankan      html  css  js  c++  java
  • 安卓触摸事件调度顺序

    //总结:
    //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
  • 相关阅读:
    Tomcat 调优的技巧
    双亲委派模型
    字典树实现
    Python获取房价信息和导出EXCEL
    日志检索关键字并截取上下行关联内容
    GC日志分析
    Linux 查看 删除进程
    Rotate partitions in DB2 on z
    C++ STL string
    DB2 for z: system catalog tables
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/14891515.html
Copyright © 2011-2022 走看看