受到Ami的响应的启发,但发现MotionEvent#getX()/ getY()以及View#getTop()/ etc返回坐标和父视图的坐标,我最后在屏幕坐标下操作以下操作,让我工作跨ViewGroups:
private boolean inRegion(float x, float y, View v) {
v.getLocationOnScreen(mCoordBuffer);
return mCoordBuffer[0] + v.getWidth() > x && // right edge
mCoordBuffer[1] + v.getHeight() > y && // bottom edge
mCoordBuffer[0] < x && // left edge
mCoordBuffer[1] < y; // top edge
}
Run Code Online (Sandbox Code Playgroud)
其在OnTouchListener中的用法是:
boolean inside = inRegion(event.getRawX(), event.getRawY(), targetView);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5629 次 |
| 最近记录: |