我正在调试我的触摸代码,而我遇到了Rect
类的这种奇怪行为。
Rect rect = new Rect(0,0,10,10);
rect.contains(0,0) // true
rect.contains(10,10) // false
rect.contains(9,9) // true
为什么会出现这种情况??!
为什么右和下边界是排除的,左和上边界是包含的?我觉得这不太合理,并且没有文档注明这一点。
这是预期的/有文档记录。从contains(int, int)参考文献中:
左侧和顶部被认为是内部,而右侧和底部则不是。 这意味着对于包含在内的x,y:left <= x < right且top <= y < bottom。
虽然我同意这似乎有点不合逻辑,但当您考虑到一个边缘情况时,它就更有道理了:
空矩形永远不包含任何点。
这个行为还可以防止单个x,y
点包含在多个不相交的Rect
中。