zoukankan      html  css  js  c++  java
  • onInterceptTouchEvent和onTouchEvent举例分析

    首先自定义三个组件,其关系是:MyLayout在最上面,MySubLayout在MyLayout下面,MyView在MySubLayout下面。

    一个点击事件进来,首先是DOWN动作,先是MyLayout的onInterceptTouchEvent( )接收这个事件,如果返回true,代表拦截此事件,此事件不会再传至下个MySubLayout的onInterceptTouchEvent,而是直接进入MyLayout的onTouchEvent( )中,在MyLayout的onTouchEvent( )中处理DOWN事件,如果返回是false,代表MyLayout对这次的事件不感兴趣,那么之后的MOVE 和UP等事件也不会再接收;如果返回true,代表MyLayout将会处理接下来的一系列事件,也就是这次的触摸事件落在MyLayout上,之后事件将会直接进入onTouchEvent( )中。

    如果MyLayout的onInterceptTouchEvent( )在接收DOWN事件时返回false,说明不拦截这个事件,传入下一级别MySubLayout的onInterceptTouchEvent( )中,之后一系列的判断同上。不同的是如果MySubLayout在onTouchEvent( )的DOWN事件返回true后,那么他会接收接下来的一些列事件,如果在接收MOVE事件时,因为要经过MyLayout的onInterceptTouchEvent( ) ,如果此时MyLayout的onInterceptTouchEvent( ) 返回true,则MySubLayout默认触发CANCLE事件,之后的一系列事件都是在它的上一级MyLayout中。

    如果有幸上两级的onInterceptTouchEvent( )都返回false,则最后事件到MyView中,MyView中只有onTouchEvent( ),如果在DOWN返回true,表示MyView受理了这次的触摸事件,接下来的MOVE,UP等事件都会在上两级的onInterceptTouchEvent( )监视下到达MyView。如果返回false,则事件会继续往上两级的onTouchEvent()传。


    触摸事件大致就是这种情况,如果需要进一步分析,建议查看源代码

    Le王冬冬 博客分享地址: http://www.cnblogs.com/dongdong230/ 每个人都应做一天攻城狮
  • 相关阅读:
    NOIP 2017 游记?
    bzoj4596 [Shoi2016]黑暗前的幻想乡
    bzoj2467 [中山市选2010]生成树
    bzoj3534 [Sdoi2014]重建
    bzoj1016 [JSOI2008]最小生成树计数
    bzoj4044 [Cerc2014] Virus synthesis
    bzoj4530 [Bjoi2014]大融合
    bzoj2594 [Wc2006]水管局长数据加强版
    bzoj 2342 [Shoi2011]双倍回文
    bzoj [HNOI2008]Cards
  • 原文地址:https://www.cnblogs.com/dongdong230/p/4183048.html
Copyright © 2011-2022 走看看