安卓开发基础之拦截事件

事件拦截在安卓开发中经常用到,尤其是在自定义控件和解决滑动冲突时。要想解决滑动冲突,先要了解他的三个重要方法:

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将进行事件的分发。               
安卓事件拦截一开始不太好理解,需要了解事件传递的规则,再结合以上知识,就不难处理,希望各位多实践。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值