今天想捕获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等后面的事件也不会处理的。
mGallery.setOnTouchListener(new OnTouchListener(){
//@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
System.out.println("Gallery onTouch");
if(event.getAction()==MotionEvent.ACTION_MOVE){
mDismiss.removeMessages(1);
System.out.println("ACTION_MOVE ");
}else if(event.getAction()==MotionEvent.ACTION_UP){
mDismiss.sendEmptyMessageDelayed(1,10000);
System.out.println("ACTION_UP ");
}
return false;
}
});
分享到:
相关推荐
本文将详细介绍`onTouchEvent`中`onTouch`方法的返回值及其影响。 `onTouchEvent` 方法接收两个参数:一个`View`对象(通常是你希望监听触摸事件的视图)和一个`MotionEvent`对象,后者包含了触摸事件的所有详细...
此外,`onTouchEvent`的返回值非常重要。如果返回`true`,表示View已经消费了事件,事件不会继续向父View传递;如果返回`false`,事件会被回溯,允许其他View有机会处理。开发者可以根据业务需求灵活调整这一逻辑,...
`onTouch`返回值至关重要,`true`表示消费了事件,系统不再向下分发;`false`则表示未完全处理,事件可能继续传递给父`View`。在实际应用中,我们可能需要根据业务逻辑决定是否消耗事件,例如,只在特定条件下执行...
这时,可以在`setOnTouchListener`的`onTouch`方法中处理自定义逻辑,并返回`false`,这样事件仍然可以传递给`onTouchEvent`进行处理。 `TestOnTouchEventAndTouchListener`这个文件名可能指的是一个测试项目,用于...
我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件。 1、boolean onTouch(View v, MotionVent event) 触摸事件发送到视图时调用(v:视图,event:触摸事件) 返回...
3. `onTouch`的返回值决定事件是否继续传递给`onTouchEvent`。 4. 如果`onTouch`返回`false`,`ACTION_UP`时`onClick`会被调用。 5. 如果`onTouch`返回`true`,`onClick`不会被调用。 理解这一机制对于优化用户界面...
同时,合理地处理`onTouchEvent`返回值可以防止事件泄漏,确保用户体验流畅。 总的来说,Android的事件分发机制是构建用户界面交互的重要基础,熟练掌握这一机制,能够帮助开发者更好地控制UI的行为,提供更加个性...
`onTouch()`是`View.OnTouchListener`接口中的方法,与`onTouchEvent()`类似,用于监听触摸事件。开发者可以设置`OnTouchListener`为View,以在特定View上捕获触摸事件。`onTouch()`的返回值同样决定事件是否被消费...
`onTouch`的返回值决定事件是否继续传播。如果返回false,事件会调用`onTouchEvent`。此时,如果View是`clickable`或`longclickable`,`onTouchEvent`通常会返回true,表示事件被消费。如果设置了`...
在上述内容中提到的例子中,我们看到当同时设置了`OnClickListener`和`OnTouchListener`时,`onTouch`会先于`onClick`执行。这是因为`onTouch`是直接处理MotionEvent的,而`onClick`是在`ACTION_UP`事件中触发的。当...
当在TextView上添加滑动监听时,如果onTouch方法返回false,则表示当前的触摸事件没有被完全处理,那么Activity中的onTouchEvent方法也会被调用,处理事件。如果TextView的onTouch方法返回true,则表示事件已经被...
- `View`的`onTouchEvent`方法是否执行与其`OnTouchListener`回调方法`onTouch`的返回值密切相关。若`onTouch`返回`false`,则`onTouchEvent`方法将被执行。 #### 三、总结 理解Android中的事件分发机制对于编写...
- **onTouchEvent()执行条件**: `View`的`onTouchEvent()`是否执行取决于`onTouchListener`的`onTouch()`方法的返回值。 #### 五、总结 通过以上分析,我们可以看出Android的事件分发机制是一个复杂而精细的过程。...
这通常通过在`onTouchEvent()`方法中调用`GestureDetector`的`onTouchEvent()`方法并根据返回值来决定是否让ListView处理触摸事件。 事件传递机制在Android中至关重要。当用户触摸屏幕时,事件会沿着View层次结构自...
`onTouch`方法的返回值决定了事件是否被当前View消费,如果返回true,表示事件已被处理,`dispatchTouchEvent`将返回true,不会继续调用`onTouchEvent`方法。这意味着`OnTouchListener`的优先级高于`onTouchEvent`,...
除此之外,还有其他重要的View相关知识点,如触摸事件的分发规则(如`onTouchEvent()`的返回值影响事件传递),自定义View的实现,以及View的性能优化,比如复用convertView在AdapterView中的应用,避免在`onDraw()`...