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



  • 相关阅读:
    Spring 定时器的使用
    spring MVC 资料
    Thrift入门及Java实例演示<转载备用>
    json数组转数组对象
    UiPath Outlook邮件正文引用图片
    UiPath 执行VBA代码Selection.Copy复制不生效
    RPA工程师学习路径是怎样的?企业面试开发者从哪些方面考察?
    一个RPA项目需要部署多少个机器人
    未来的企业软件和RPA
    RPA——被遮住的代码
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/7027669.html
Copyright © 2011-2022 走看看