Android 视图';s onTouchListener vs onTouchEvent

Android 视图';s onTouchListener vs onTouchEvent,android,touch-event,ontouchlistener,Android,Touch Event,Ontouchlistener,视图的onTouchEvent之间有什么区别: public class MyCustomView extends View { // THIS : @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } } 以及它的onTouchListener: MyCustomView myView = (MyCustomV

视图的
onTouchEvent
之间有什么区别:

public class MyCustomView extends View {
    // THIS :
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }
}
以及它的
onTouchListener

MyCustomView myView = (MyCustomView) findViewById(R.id.customview);
myView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public void onClick(View arg0) {
        // do something
    }
});

如果这两者不同,
我们是否需要同时实现这两个目标?
哪个先被调用


如果我有一些滚动和缩放功能,我应该在
onTouchEvent
onTouchListener
中实现它们吗?

我不确定您是否找到了答案。但我发现和你的相似

“只要您声明了接口并将侦听器放在正确的位置,onTouch就可以在您想要的任何地方工作(无论是在活动还是视图中)!另一方面,onTouchEvent只在视图中工作!”


对于滚动和缩放功能,我想onTouchListener将足以完成这两个功能(以及更多类似旋转等功能)。

LeeYiHong的回答是正确的,另一个非常重要的事情是写在:

在将触摸事件
[即onTouchEvent(MotionEvent)]
提供给视图之前,将调用回调
[即View.ontouchelistener->onTouch(View v,MotionEvent事件)]

“OnTouchListener”的代码应该有一个“onTouch”方法而不是“onClick”你说的“works”是什么意思?说onTouchEvent在活动中不工作是什么意思?你的意思是只能在视图对象中实现onTouchEvent吗?除了它们的“工作”位置和处理顺序之外,它们之间有什么功能上的区别吗?换句话说,你能用一个做什么,而用另一个做不了什么?还是更容易?为什么有人会选择一个而不是另一个,或者这完全是一个折腾?
public class MyCustomView extends View {

    public MyCustomView(Context context, AttributeSet attrs) {
        // THIS :
        setOnTouchListener(new View.OnTouchListener() {
            @Override
            public void onClick(View arg0) {
                // do something
            }
        });
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }
}