Просмотр onTouchListener vs onTouchEvent

В чем разница между 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 } }); 

или

 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); } } 

Если это два,
Нужно ли нам внедрять оба?
Какой из них вызывается первым?

Если у меня есть функция прокрутки и масштабирования, следует ли реализовать их внутри onTouchEvent или onTouchListener ?

Solutions Collecting From Web of "Просмотр onTouchListener vs onTouchEvent"

Ответ LeeYiHong правильный, а другая очень важная вещь – это то, что написано на http://developer.android.com/reference/android/view/View.OnTouchListener.html :

Обратный вызов [ie View.OnTouchListener -> onTouch(View v, MotionEvent event)] будет вызван до того, как сенсорное событие [ie onTouchEvent(MotionEvent)] будет передано в представление.

Я не уверен, нашли ли вы свой ответ. Но я нашел похожие вопросы, похожие на ваши.

«OnTouch работает везде, где бы вы ни хотели (будь то в действии или просмотре), пока вы объявили интерфейс и правильно поставили Listener! С другой стороны, onTouchEvent работает только внутри представления!»

Для функциональности прокрутки и масштабирования я предполагаю, что onTouchListener будет достаточным для выполнения обеих функций (и многих других, таких как вращение и т. Д.).