Android事件的分发、传递和消耗
来源:互联网 发布:lol韩服网络错误 编辑:程序博客网 时间:2024/05/29 13:40
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
- Android事件的分发、传递和消耗
- Android ViewGroup的事件分发和传递解析
- Android事件分发传递机制的领悟和理解
- Android Touch事件分发和传递机制
- Android事件的分发传递机制
- Android 的事件分发、传递、处理机制
- 事件分发和事件传递
- Android事件分发与传递
- Android View事件分发机制--点击事件的传递规则
- android key事件分发与焦点事件的传递
- iOS事件的分发传递
- 事件的分发传递机制
- Android事件分发(事件传递机制)
- Android触摸事件的分发(传递)机制(图文)
- android触摸事件的分发和处理
- Android 事件的分发和消费机制
- android 事件的分发和消费机制
- Android事件的分发、拦截和执行
- configure: error: Cannot find php-config
- Android保存用户名和密码
- git clone时出现Please make sure you have the correct access rights and the repository exists.错误
- 用栈实现中缀表达式c++
- Rust 1.12.1 发布
- Android事件的分发、传递和消耗
- Android UI适配(dp,dpi,px介绍)
- 法线纹理(贴图)Normal Mapping
- ubuntu上安装mysql
- NSAttributedString描述和应用
- Android 打开各种文件的方法
- 数据表与简单Java类映射-依靠代码链
- vb 引用adodb问题
- 简易的顺序栈