• 触摸事件的总结(


    /**总结:
    1.
    1.1
    dispatchTouchEvent事件分发这个每个都有(无论是View 还是viewgrope,以及Activity)
    这个是用来处理是否分发事件(这个总是会被执行的前提是父控件没有拦截或者进行分发了)
    如果这里就取消事件分发则无法响应本次触摸(以后的 onInterceptTouchEvent或者 onTouchEvent都不会执行包括父控件的)
    1.2
    onTouchEvent事件分发这个每个都有(无论是View 还是viewgrope,以及Activity)
    用来处理自己的触摸事件,如果自己返回true则不再给下面的子view分发触摸事件
    1.3
    onInterceptTouchEvent这个是是否拦截事件(只有ViewGrope才有)
    拦截触摸事件的,如果dispatchTouchEvent是同意的则可以通过这个来拦截不再给子view分发
    2.
    如果dispatchTouchEvent为false也就是可以往下给子view分发事件,
    但是onInterceptTouchEvent拦截true的时候讲不会再给子view了,
    包括onTouchEvent处理了事件任意一个为也就是,
    3.dispatchTouchEvent true连自己的响应都不会有,也没有自己的拦截
    4.
    super.dispatchTouchEvent(ev);并不会和false相等,
    如果是flase,子view也不会得到事件分发的处理(如果自己不想拦截处理最好用super,毕竟你不想处理父类还有要处理的东西呢)

    以上是个人总结如果有问题或者错误希望大家指导,以下是测试部分的响应日志:

    //标准:Activity->LinearLayout->TextView (布局就是LinearLayout里面一个TextView)
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onInterceptTouchEvent:LinearLayout 拦截
    dispatchTouchEvent:TextView 事件分发
    onTouchEvent: TextView事件响应
    onTouchEvent: LinearLayout事件响应
    onTouchEvent: Activity事件响应
    dispatchTouchEvent:Activity 事件分发
    onTouchEvent: Activity事件响应
    */
    /* 拦截后dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onInterceptTouchEvent:LinearLayout 拦截
    onTouchEvent: LinearLayout事件响应
    onTouchEvent: Activity事件响应
    dispatchTouchEvent:Activity 事件分发
    onTouchEvent: Activity事件响应*/


    /** dispatchTouchEvent true后(不在进行事件分发)
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    */
    /**
    * Touch true后
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onInterceptTouchEvent:LinearLayout 拦截
    dispatchTouchEvent:TextView 事件分发
    onTouchEvent: TextView事件响应
    onTouchEvent: LinearLayout事件响应
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onTouchEvent: LinearLayout事件响应
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onTouchEvent: LinearLayout事件响应
    */
    /*onInterceptTouchEvent 和Touch为true
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onInterceptTouchEvent:LinearLayout 拦截
    onTouchEvent: LinearLayout事件响应
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onTouchEvent: LinearLayout事件响应
    dispatchTouchEvent:Activity 事件分发
    dispatchTouchEvent:LinearLayout 事件分发
    onTouchEvent: LinearLayout事件响应*/



  • 相关阅读:
    Nginx 配置对流量、连接和请求的限制
    linux iptables规则介绍
    Javascript 语言精粹 代码片段合集
    Wowza® Media Systems 使用配置手册。
    如何去除My97 DatePicker控件上右键弹出官网的链接
    [转载]jQuery诞生记-原理与机制
    java swing JButton文字显示异常
    c# 内存拷贝 解决json序列化丢失私有数据(二进制序列化反序列化)
    c# Marshal 将字节数组转为结构 封装协议
    c# 串口通信及模拟串口进行调试
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/7027669.html
Copyright © 2020-2023  润新知