Android onTouch方法调用了两次的问题

今天在做安卓应用时,有一个功能是点一下某个部件的时候弹出一个对话框,用的是onTouchListener,但是发现点击的时候弹出了两个窗口,观察输出,发现onTouch事件调用了两次:


怎么回事呢?

原来,onTouch事件在手指按下和离开的时候分别调用了一次。

那么我只需要弹出一个窗口,也就是触发一次,怎么修改呢?

答案就是判断一下当前的onTouch事件是正在按下还是正在离开,用的是其中一个给定的参数:MotionEvent 类型的 event,当本次onTouch是离开时,阻止程序继续执行即可:

[java]  view plain  copy
  1. cop_province.setOnTouchListener(new View.OnTouchListener() {  
  2.     @Override  
  3.     public boolean onTouch(View v, MotionEvent event) {  
  4.         //阻止手指离开时onTouch方法的继续执行  
  5.         if(event.getAction() == MotionEvent.ACTION_UP){  
  6.             return true;  
  7.         }  
也就是说,onTouch还是执行两次,但第二次的弹窗操作被制止了,也就达到了效果。

看来,对于看似简单的Touch事件,Android的设计者们远比我们想得周到。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值