-1
  private void dealEvent(int actionPointerIndex, MotioEvent event,
  View eventView, int actionresolved) {

  int rawX, rawY;
  int location[] = { 0, 0 };


  eventView.getLocationOnScreen(location);
rawX = (int) event.getX(actionIndex) + location[0];
rawY = (int) event.getY(actionIndex) + location[1];

ArrayList<View> views = getTouchedViews(rawX, rawY, actionresolved);

我不明白这些线,我们为什么要这样做?

rawX = (int) event.getX(actionIndex) + location[0];
rawY = (int) event.getY(actionIndex) + location[1];

ArrayList<View> views = getTouchedViews(rawX, rawY, actionresolved);
4

1 回答 1

1

这主要是假设,因为您提供的代码不太可编译(MotioEvent应该是MotionEvent并且您actionPointerIndex在函数声明和actionIndex主体中使用)。

基于此链接,其中一个功能是事件会自动转发到底层视图。

它看起来像来自getX并且getY相对于某个非原点的返回值(例如,捕获事件的对象的左上角)。

getLocationOnScreen调用填充location该点,然后您使用它从相关坐标生成原始(可能是屏幕)坐标。

很可能,这是因为getTouchedViews需要原始坐标才能为您提供当时的视图列表。然后代码通过该列表来确定哪个视图应该接收事件。

于 2012-05-09T01:13:53.140 回答