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);
答案 0 :(得分:1)
这主要是假设,因为您提供的代码不完全可编辑(MotioEvent
应该是MotionEvent
而您在函数声明中使用actionPointerIndex
而在actionIndex
中使用getX
体)。
基于this link,其中一项功能是事件会自动转发到基础视图。
看起来getY
和getLocationOnScreen
的返回值是相对于某些非原点(例如,捕获事件的对象的左上角)。
location
调用使用该点填充getTouchedViews
,然后使用该调用从相对的坐标生成原始(可能是屏幕)坐标。
最有可能的是,因为{{1}}需要原始坐标来为您提供一个视图列表。然后代码通过该列表来确定哪个视图应该接收事件。