关于view的Touch事件的一些理解
2016-07-28 10:24
369 查看
关于view的Touch事件的一些理解做如下笔记
一个view接收到touch事件,首先会传入到该view的dispatchTouchEvent()方法中
dispatchTouchEvent中主要逻辑
1.判断该view是否设置了onTouchLIstener
2.在设置了onTouchListener的前提下继续判断onTouch的返回值
3.如果onTouch返回true,则ondispatchTouchEvent返回true.
4.如果onTouch返回false,进入onTouchEvent方法
5.在onTouchEvent的ACTION_UP方法中处理了onclick事件
总结:
onTouch()与onTouchEvent()以及click三者的区别和联系
1 onTouch()与onTouchEvent()都是处理触摸事件的API
2 onTouch()属于TouchListener接口中的方法,是View暴露给用户的接口便于处理触摸事件,而onTouchEvent()是Android系统自身对于Touch处理的实现
3 先调用onTouch()后调用onTouchEvent()。而且只有当onTouch()未消费Touch事件才有可能调用到onTouchEvent()。即onTouch()的优先级比onTouchEvent()的优先级更高。
4 在onTouchEvent()中处理ACTION_UP时会利用ClickListener执行Click事件。所以Touch的处理是优先于Click的
5 简单地说三者执行顺序为:onTouch()–>onTouchEvent()–>onClick()
View没有事件的拦截(onInterceptTouchEvent( )),ViewGroup才有,请勿混淆
一个view接收到touch事件,首先会传入到该view的dispatchTouchEvent()方法中
dispatchTouchEvent中主要逻辑
1.判断该view是否设置了onTouchLIstener
2.在设置了onTouchListener的前提下继续判断onTouch的返回值
3.如果onTouch返回true,则ondispatchTouchEvent返回true.
4.如果onTouch返回false,进入onTouchEvent方法
5.在onTouchEvent的ACTION_UP方法中处理了onclick事件
总结:
onTouch()与onTouchEvent()以及click三者的区别和联系
1 onTouch()与onTouchEvent()都是处理触摸事件的API
2 onTouch()属于TouchListener接口中的方法,是View暴露给用户的接口便于处理触摸事件,而onTouchEvent()是Android系统自身对于Touch处理的实现
3 先调用onTouch()后调用onTouchEvent()。而且只有当onTouch()未消费Touch事件才有可能调用到onTouchEvent()。即onTouch()的优先级比onTouchEvent()的优先级更高。
4 在onTouchEvent()中处理ACTION_UP时会利用ClickListener执行Click事件。所以Touch的处理是优先于Click的
5 简单地说三者执行顺序为:onTouch()–>onTouchEvent()–>onClick()
View没有事件的拦截(onInterceptTouchEvent( )),ViewGroup才有,请勿混淆
相关文章推荐
- U_boot 的 bootcmd 和bootargs参数详解
- 级联下拉菜单的实现
- App Thinning研究
- sql查询数据库表中重复记录方法
- Android 使用MediaStore.Images和 Cursor查询本地图片和图片缩略图
- MySQL 5.7并行复制时代
- tyvj 1059 过河 dp
- Mysql行号
- Perl参考函数
- POJ - 3311 Hie with the Pie
- VS2008快捷键总结
- UIScrollView的循环滚动+UIPageControll
- UVA 11149 Power of Matrix(矩阵+二分)
- Android开发笔记(-)初识Android中的px,sp,dp
- GitHub相关
- Pro JPA2读书笔记系列(十二)-第十一章(高级主题)
- QProcess::readAll() 函数
- Hadoop:HDFS的数据复制
- udev使用方法(附实例)
- 易买网项目总结