zoukankan      html  css  js  c++  java
  • 触摸事件的总结(

    /**总结:
    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事件响应*/



  • 相关阅读:
    IIs和ftp
    java中HashMap重要性质和优化总结
    深入理解mysql的left join(真的很深入)
    windows bat批处理语法简析
    遍历hashMap的两种方式
    Java开发实践 集合框架 全面分析
    MySQL中日期与时间类型
    CentOS6.5下Redis安装与配置
    查看redis进程
    Web阶段:第七章:Tomcat服务器
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/7027669.html
Copyright © 2011-2022 走看看