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_DOWN11-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