单击事件与触摸事件的区别

本文详细解析了Android中View组件如何区分onTouch与onClick事件,包括事件传递的顺序及判定事件是否被消耗的过程。通过具体代码示例展示了触摸事件与单击事件的执行顺序以及如何通过返回值来决定事件是否继续传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

针对屏幕上的一个View组件,Android是如何区分应当触发onTouch事件还是onClick事件?在Android中,一次用户操作可以被不同的View组件按次序分别处理,并将完全响应了用户的一次UI操作称之为消耗了该事件(consume),那么Android是按什么次序将事件传递的,又在什么情况下判定为消耗了该事件?下面通过一段具体的代码进行说明。

在这段代码中,先为按钮添加单击事件监听器,并通过Log.i()方法输出onClick(单击事件)。然后为按钮添加触摸事件,通过判断方式输出当前手指是按下还是抬起。具体代码如下:

01 	Button button = (Button) findViewById(R.id.btn);  //获得按钮对象
02 	//为按钮添加单击事件监听器
03 	button.setOnClickListener(new View.OnClickListener() {
04 	@Override
05 	public void onClick(View v) {
06 	        Log.i("onClick", "单击事件");
07 	    }
08 	});
09 	//为按钮添加触摸事件监听器
10 	button.setOnTouchListener(new View.OnTouchListener() {
11 	@Override
12 	public boolean onTouch(View v, MotionEvent event) {
13 	if (event.getAction() == MotionEvent.ACTION_DOWN) {  //表示手指按下时
14 	Log.i("onTouch", "按下");
15 	        } else if (event.getAction() == MotionEvent.ACTION_UP) {//表示手指抬起时
16 	Log.i("onTouch", "抬起");
17 	        }
18 	return false;     //表示未消耗掉这个事件
19 	}
20 	});

执行上面的代码后,单击屏幕中的按钮,将会在LogCat面板中看到如图7.11所示的结果。



说明:为一个组件同时设置单击事件与触摸事件时,触摸事件首先被执行然后执行单击事件。当触摸事件监听器返回值为ture时,说明消耗掉了这个事件,将不再执行单击事件。


本文摘自明日科技出版的《零基础学Android》作者:李磊,转载请注明出处!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值