在Android中,onInterceptTouchEvent和onTouchEvent都是用来处理Touch操作的函数。

其中onTouchEvent在View和ViewGroup类中都有,而onInterceptTouchEvent只在ViewGroup类中有。

在ViewGroup中onInterceptTouchEvent和onTouchEvent协作,使相应的ViewGroup(View)去处理相应的Touch事件。

ViewGroup可以嵌套多层ViewGroup,Touch事件最先被最外层的ViewGroup接收,向内一层层传递,最终传递到最内层的ViewGroup(View)。内层的ViewGroup(View)最先处理Touch事件,处理完之后向外一层层传递,每一层依次处理该Touch事件。

实际上,每一曾的ViewGroup都可以决定Touch事件是否要继续向内/向外传递。

通常情况下,如果使用系统自带的ViewGroup,Touch事件会从最外层传递到最内层,再从最内层处理到最外层。而我们自定义的ViewGroup则不必这样,我们可以通过自定义onInterceptTouchEvent和onTouchEvent的返回值,决定是否还要将Touch事件向内/向外传递,还是将当前的ViewGroup就当做最外层/最内层的来处理。

onInterceptTouchEvent的返回值用来决定Touch事件是否继续向内层传递(是否拦截这个Touch事件):return true:拦截,Touch事件不再向内层传递return false:不拦截,Touch事件继续向内层传递
onTouchEvent的返回值用来决定Touch事件是否继续向外层传递(是否已经消费(consume)掉这个事件):return true:Touch事件已经被消费,不再向外层传递return false:Touch事件还没有被完全消费,继续向外层传递

更多相关文章

  1. android的消息处理机制(图+源码分析)——Looper,Handler,Message
  2. Android事件分发机制四:学了事件分发有什么用?
  3. Android事件分发机制四:学了事件分发有什么用?
  4. Android的消息处理机制
  5. Android高手进阶教程(十七)之---Android中Intent传递对象的两种
  6. android触屏事件处理onInterceptTouchEvent的问题
  7. 深入理解Android消息处理系统——Looper、Handler、Thread
  8. 深入理解Android消息处理系统——Looper、Handler、Thread
  9. Android(安卓)仿滴滴首页嵌套滑动效果

随机推荐

  1. 浅谈MySQL分页Limit的性能问题
  2. ubuntu安装mysql数据库方法
  3. mysql允许外网访问以及修改mysql账号密码
  4. mysql 8.0 错误The server requested aut
  5. mysql中general_log日志知识点介绍
  6. MySQL中Multiple primary key defined报
  7. mysql第一次安装成功后初始化密码操作步
  8. macOS下mysql 8.0.16 安装配置图文教程
  9. mac系统下mysql 8.0.11 安装指南
  10. Mysql错误Every derived table must have