onTouchevent()vs onTouch()

ste*_*ios 58 android ontouchlistener touch-event

在使用onTouchEvent和onTouch进行了多次实验后,我发现onTouch可以在任何地方工作(无论是在活动中还是在视图中),只要您声明了接口并将Listener放在正确的位置即可!另一方面,onTouchEvent仅适用于View!我的假设是否正确?这是真正的区别吗?

tro*_*foe 42

是的,你是正确的- onTouch()所使用的用户View同时获得触摸事件onTouchEvent()所使用的派生类View拿到触摸事件.

  • 不清楚派生类在这里意味着什么,如果我在活动中我只在这个活动中工作 (3认同)

Dex*_*ter 29

我对onTouchEvent()和onTouch()的工作方式有些困惑(你可以看看我对这个问题的评论).经过以下一些研究后,我发现了它.这可能对初学者有所帮助.

1)实施:

如果你想使用onTouch(),你必须做三件事.

1-实现OnTouchListener

2-调用要设置的视图上的setOnTouchListener()捕获事件

3-覆盖onTouch()来处理事件

但是如果你想使用onTouchEvent(),则不需要执行上面的步骤1和2.只需要覆盖onTouchEvent().

2)工作:

onTouch()适用于视图,视图组,活动.这意味着您可以在view,viewgroup或activity中使用onTouch().这个方法有两个参数[onTouch(View v,MotionEvent e)].这允许您过滤活动或视图组中不同视图的事件.或者活动本身可以处理它. onTouchEvent()接受一个参数[ onTouchEvent(MotionEvent e)].因此,这只能在实现它的视图内部或派生视图中使用.派生的View可以扩展onTouchEvent()中定义的触摸行为.

我认为,这些选项是Android更灵活的开发理念的一部分,尽管它有时会给学习者带来困惑.


hem*_*tsb 5

我使用了ontouch()和ontouchevent(),因为当我想在单个视图(比如Linearlayout)上处理单个视图元素(如按钮,图像按钮等)时使用ontouch,而当我想在其他区域工作时我的元素(例如按钮)我使用ontouchevent.