OnTouchListener 返回值的含义(转载)

今天想捕获Gallery的Touch事件做自己想要的处理,但你添加完setOnTouchListener监听完之后eclipse自动会生成一个onTouch方法,就可以在这里面做你想要做的处理了,若你小心地看它会增加return false这行。我在处理完Event.ACTION_MOVE时将其改为return true。当我运行我的程序的时候发现Gallery不能左右滚动了。我就觉得很纳闷了,怎么不能滚动了呢?然后一个朋友提示我应该return false.我改完运行后,果真可以滚动了,并且我在move的时候也实现了我的处理。当时我就在想:return false和return true有何区别呢? 

下面就是我在别的文章学习总结来的结论: 
1,return false说明你还没消费onTouch事件,在执行完你onTouch里面的代码之后,onTouch事件并没有结束。就是会自动地执行Gallery这个view里onTouch代码(这个为默认).所以这就是为什么没增加你的处理的时候就只自动地调用Gallery的onTouch,若你在onTouch里面增加你的代码并且return false就会执行你的处理和默认的处理。 

2,return true说明你已经消费完了onTouch事件,在执行完你的onTouch里面的代码之后,这个onTouch事件就结束了。也就是说不会再调用默认的onTouch事件了。在onTouch里面有很多种的处理比如move,down,up....,若你在move里面return false,那么接着的fling,up等后面的事件也不会处理的。
 

Java代码   收藏代码
  1. mGallery.setOnTouchListener(new OnTouchListener(){  
  2.   
  3.             //@Override  
  4.             public boolean onTouch(View v, MotionEvent event) {  
  5.                 // TODO Auto-generated method stub  
  6.                 System.out.println("Gallery onTouch");  
  7.                 if(event.getAction()==MotionEvent.ACTION_MOVE){  
  8.                     mDismiss.removeMessages(1);  
  9.                     System.out.println("ACTION_MOVE ");  
  10.                       
  11.                 }else if(event.getAction()==MotionEvent.ACTION_UP){  
  12.                     mDismiss.sendEmptyMessageDelayed(1,10000);  
  13.                     System.out.println("ACTION_UP ");  
  14.                 }  
  15.                 return false;  
  16.             }  
  17.               
  18.         });  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值