您的位置:首页 > 其它

安卓开发基础之拦截事件

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开发艺术探索》,作者:任玉刚):

<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将进行事件的分发。               

安卓事件拦截一开始不太好理解,需要了解事件传递的规则,再结合以上知识,就不难处理,希望各位多实践。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: