Android事件的分发、传递和消耗

来源:互联网 发布:lol韩服网络错误 编辑:程序博客网 时间:2024/05/29 13:40
android的事件分发,Android事件传递, Android事件消耗

 1.学习目的
    1.深入的理解Android事件机制
    2.解决事件冲突
        如: drawerlayout 点击穿透
          viewpager嵌套viewpager
 textview,button 
 2.事件
    1.常见的事件有单击,双击,长按,拖拽,移动,触摸,多点触控等等组成Android的事件
      2.事件的动作组成
        1.down  按下动作,所以的动作都是从down事件开始
2.move   手指移动动作,移动事件,
3.up     手指离开 (代表这个事件完成)
    3.事件传递 
      1.屏幕硬件捕捉到事件----系统 --- 应用 ----activity---- viewgroup --- viewgroup**(多层嵌套) --- view (最终的view)
  4.视图的结构
        
  5.事件处理的方法  ("是否" 来确定执行过程)
      1.dispatchTouchEvent "是否"进行分发  事件分发方法, activity中,viewgroup,view中都有,当事件传到该方法的时候,用来将该事件传递下去
      2.onIntercepEvent    "是否"进行拦截  事件拦截方法,  只有viewgroup中有该方法,用来拦截事件
      3.onTouchEvent        "是否"进行处理    事件处理方法 ,用来处理事件
    6.为什么view中没有onIntercepEvent
没有子的view不需要进行传递
   为什么activity中没有onIntercepEvent
           activity用来显示和交互,如果拦截了事件,则没有意思    
    7.验证事件分发
Activity A    ViewGorup G   View V       
        默认情况(默认拦截返回false)
         A-diapatchTouchEvent ---- G1-dis ---- G2-dis-----V dis---- V toucheEvent
V toucheEvent返回值   1.false ---- V dis false----G2-touch false--- G2 dis false -----  G1-touch false--- G1 dis false
A  tou  false ----A dis  false

                     2.true  ---- V dis  ture  ----G2  dis ture ----- G1  dis ture ----A dis ture


点击TextView子控件的事件监听,打印logcat日志:

11-07 11:26:29.889 3134-3134/? I/TAG: MainActivity+dispatchTouchEvent: --ACTION_DOWN
11-07 11:26:29.889 3134-3134/? I/TAG: TextViewEvent+dispatchTouchEvent: --ACTION_DOWN
11-07 11:26:29.889 3134-3134/? I/TAG: TextViewEvent+onTouchEvent: --ACTION_DOWN
11-07 11:26:29.889 3134-3134/? I/TAG: TextViewEvent+onTouchEvent:--false
11-07 11:26:29.889 3134-3134/? I/TAG: MainActivity+onTouchEvent: --ACTION_DOWN
11-07 11:26:29.889 3134-3134/? I/TAG: MainAvtivity+onTouchEvent:--false
11-07 11:26:30.009 3134-3134/? I/TAG: MainActivity+dispatchTouchEvent: --ACTION_UP
11-07 11:26:30.009 3134-3134/? I/TAG: MainActivity+onTouchEvent: --ACTION_UP
11-07 11:26:30.009 3134-3134/? I/TAG: MainAvtivity+onTouchEvent:--false


滑动TextView子控件的事件监听,打印logcat日志:

11-07 11:27:26.072 3134-3134/? I/TAG: MainActivity+dispatchTouchEvent: --ACTION_DOWN

11-07 11:27:26.072 3134-3134/? I/TAG: TextViewEvent+dispatchTouchEvent: --ACTION_DOWN
11-07 11:27:26.072 3134-3134/? I/TAG: TextViewEvent+onTouchEvent: --ACTION_DOWN
11-07 11:27:26.072 3134-3134/? I/TAG: TextViewEvent+onTouchEvent:--false
11-07 11:27:26.072 3134-3134/? I/TAG: MainActivity+onTouchEvent: --ACTION_DOWN
11-07 11:27:26.072 3134-3134/? I/TAG: MainAvtivity+onTouchEvent:--false
11-07 11:27:26.152 3134-3134/? I/TAG: MainActivity+dispatchTouchEvent: --ACTION_MOVE
11-07 11:27:26.152 3134-3134/? I/TAG: MainActivity+onTouchEvent: --ACTION_MOVE
11-07 11:27:26.152 3134-3134/? I/TAG: MainAvtivity+onTouchEvent:--false
11-07 11:27:26.177 3134-3134/? I/TAG: MainActivity+dispatchTouchEvent: --ACTION_MOVE
11-07 11:27:26.177 3134-3134/? I/TAG: MainActivity+onTouchEvent: --ACTION_MOVE
11-07 11:27:26.177 3134-3134/? I/TAG: MainAvtivity+onTouchEvent:--false


 















































0 0
原创粉丝点击