为什么Rect.contains(右,底部)返回false?

时间:2014-08-29 16:51:52

标签: android rect

我正在调试我的触控码的问题,我偶然发现Rect类的这种奇怪的行为。

Rect rect = new Rect(0,0,10,10);
rect.contains(0,0)   // true
rect.contains(10,10) // false
rect.contains(9,9)   // true

为什么会这样???

为什么右边界和底边界是独占的,左边和顶边是包容性的?我觉得它不符合逻辑,而且没有任何文档记录这一点。

1 个答案:

答案 0 :(得分:4)

这是预期/记录的。来自the contains(int, int) reference

  

左侧和顶部被认为是内部,而右侧和底部不是。这意味着对于x,y包含:left< = x<右和上< = y<底部。

虽然我同意这看起来有点不合逻辑,但在考虑边缘情况时更有意义:

  

空矩形永远不会包含任何点。

此行为还会阻止单个x,y点包含在多个不相交的Rect中。