安卓开发基础之拦截事件
2016-03-31 18:18
211 查看
事件拦截在安卓开发中经常用到,尤其是在自定义控件和解决滑动冲突时。要想解决滑动冲突,先要了解他的三个重要方法:
1、public boolean dispatchTouchEvent(MotionEvent ev):事件分发
2、public boolean onInterceptTouchEvent(MotionEvent ev):事件拦截
3、public boolean onTouchEvent(MotionEvent event):事件消耗
其实其中还有好多细小的知识点,但我们只从大方向上分析:
三者关系用如下代码表示(摘自《android开发艺术探索》,作者:任玉刚):
event)要进行动作判断,符合逻辑要求的时候返回true,表示事件被消耗 ,不在向下传递。如果事件不拦截,该Viewgroup的子View将进行事件的分发。
安卓事件拦截一开始不太好理解,需要了解事件传递的规则,再结合以上知识,就不难处理,希望各位多实践。
1、public boolean dispatchTouchEvent(MotionEvent ev):事件分发
2、public boolean onInterceptTouchEvent(MotionEvent ev):事件拦截
3、public boolean onTouchEvent(MotionEvent event):事件消耗
其实其中还有好多细小的知识点,但我们只从大方向上分析:
三者关系用如下代码表示(摘自《android开发艺术探索》,作者:任玉刚):
<span style="font-size:18px;">public boolean dispatchTouchEvent(MotionEvent ev) { boolean consume = false; if (onInterceptTouchEvent(ev)) { consume = onTouchEvent(ev); } else { consume = child.dispatchTouchEvent(ev); } return consume; } </span>从代码可以看出:如果拦截onInterceptTouchEvent(MotionEvent ev)方法返回true,事件被拦截,将进行onTouchEvent(MotionEvent event),这时onTouchEvent(MotionEvent
event)要进行动作判断,符合逻辑要求的时候返回true,表示事件被消耗 ,不在向下传递。如果事件不拦截,该Viewgroup的子View将进行事件的分发。
安卓事件拦截一开始不太好理解,需要了解事件传递的规则,再结合以上知识,就不难处理,希望各位多实践。
相关文章推荐
- thinkphp 中 ajax的使用
- 项目:暗文引导界面(二)
- Linux下ps命令详解
- tomcat误报
- 每日一篇-面试分享
- bzoj4317 Atm的树 树分治
- 1041. 考试座位号(15)
- Ubuntu搭建NFS文件服务器
- JAVA-数据类型、变量、常量
- 程序员健康指南阅读笔记
- 开发经验总结(一)
- PHPCMS_数据库配置
- 高德地图定位服务
- Android 初使用GreenDAO框架操作数据库
- 使用FormData对象
- C++第二次实验-模拟ATM
- 【杭电-oj】-5053-立方和(数学方法)
- 算法总结1——贪婪算法,动态规划
- python中的for i in range
- 第二次试验2,3,4