• ontouch事件原理 view和viewgroup


    要彻底理解ontouch事件,首先必须从源码角度对ontouch事件有个直观的认识,谈到认识,不得不提及一位大牛的两篇博文,实际上如果看懂了,ontouch事件和onclick包括onlongclick基本上也就被攻克了。

    http://blog.csdn.net/guolin_blog/article/details/9097463

    http://blog.csdn.net/guolin_blog/article/details/9153747

    本人只是站在巨人的肩膀上,看明白以后,发布一下自己的测试报告和结论。

    在展示测试报告之前,先来温习一下ontouch事件的传递流程,点击在这个布局的child上以后,肯定是先调用parent(viewgroup)的dispatchontouchevent分发事件,在dispatchontouchevent中会有一个interceptontouchevent判断parent是否拦截ontouch事件,如果拦截,则ontouch事件在parent组件进行处理,如果不拦截,那么ontouch事件会分发给被点击的child,此时执行child的actiondown事件,如果执行完actiondown返回false,那么ontouch事件会上溯给parent的ontouch方法进行处理,接着parent一样会执行actiondown事件,执行完返回false那么后续事件就没有得处理了,如果返回true,则执行action move和up。

    by the way,如果上图你没看懂,请继续看前文的两个超链接直到看透为止。

    后记:onlongclick的判断是在action down中判断的,如果一个button既绑定了点击事件,又绑定了长按事件,那么长按事件最好返回true,否则长按以后会继续走action up松开手时候还会相应click事件,除非你需要两者的效果同时出现。

  • 相关阅读:
    Django中cookie和session的操作
    Django 模板
    阿里云主机如何设置swap
    Django URL
    Django 高级视图
    Django 表单
    工作流开发使用问题汇总
    软件的模块设计摘要
    Access数据类型与.net OleDbType枚举类型的对应
    60个数据窗口技巧
  • 原文地址:https://www.cnblogs.com/gangmiangongjue/p/4661158.html
Copyright © 2020-2023  润新知