Как передать сенсорные события от дочернего представления к родителю? - PullRequest
2 голосов
/ 23 ноября 2010

Я пытаюсь реализовать функцию перетаскивания в приложении Android. Часть перетаскивания завершена, осталось только выяснить, куда будет отброшен перетаскиваемый вид? С какой точки зрения, чтобы быть более точным. Вот функция onTouch моего перетаскиваемого вида:

public boolean onTouch(View v, MotionEvent event) {
  // Is the event inside of this view?
  if (!mRegion.contains((int) event.getX(), (int) event.getY())) {
   return false;
  }

  if (event.getAction() == MotionEvent.ACTION_DOWN) {
   ...
   System.out.println("**** IMAGE DRAG STARTED!");
   return true;
  } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                        ...
   this.invalidate();
   return true;   
  } else if (event.getAction() == MotionEvent.ACTION_UP){
   System.out.println("**** ICON DRAG ENDED!");
   return false;
  } else {
   return true;
  }
 }

Все события движения обрабатываются, кроме ACTION_UP (момент, когда представление освобождается). Вопрос в том, как сделать так, чтобы это событие вызывалось в родительском объекте (передавало его обработчику onTouch родительского элемента), чтобы я мог узнать, где оно было удалено. Я реализовал обработку onTouch в родительском объекте, но событие не перехватывается.

Спасибо.

1 Ответ

3 голосов
/ 23 ноября 2010

Переопределить onInterceptTouchEvent (событие MotionEvent)

...