一个View的onTouchListener与onTouchEvent

top*_*her 13 android ontouchlistener touch-event

视图之间有什么区别onTouchEvent:

public class MyCustomView extends View {
    // THIS :
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }
}
Run Code Online (Sandbox Code Playgroud)

及其onTouchListener:

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

要么

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这两者不同,
我们是否需要实施两者?
首先调用哪一个?

如果我有一些滚动和缩放功能,我应该在里面实现它们onTouchEvent还是onTouchListener

Eli*_*345 11

LeeYiHong的回答是正确的,另一个非常重要的是http://developer.android.com/reference/android/view/View.OnTouchListener.html上写的:

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

  • 除了他们"工作"的地方和他们处理的订单之外,它们之间是否有任何功能差异?换句话说,对于另一个你无法做到的事情,你能做些什么吗?还是更容易?为什么有人选择一个而不是另一个,还是完全折腾? (6认同)