我不明白一行代码|多点触控|

时间:2012-05-09 01:07:29

标签: java android eclipse location multi-touch

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

1 个答案:

答案 0 :(得分:1)

这主要是假设,因为您提供的代码不完全可编辑(MotioEvent应该是MotionEvent而您在函数声明中使用actionPointerIndex而在actionIndex中使用getX体)。

基于this link,其中一项功能是事件会自动转发到基础视图。

看起来getYgetLocationOnScreen的返回值是相对于某些非原点(例如,捕获事件的对象的左上角)。

location调用使用该点填充getTouchedViews,然后使用该调用从相对的坐标生成原始(可能是屏幕)坐标。

最有可能的是,因为{{1}}需要原始坐标来为您提供一个视图列表。然后代码通过该列表来确定哪个视图应该接收事件。