Android - 获取可见矩形的百分比

Android - get percentage of viewable rect

我试图指出某个视图(比如视图 A)是否 100% 可见,也就是说,如果它是 100x100 视图,我想确保显示所有 10000 个像素。

样本:

--------------
|            |
|   ___      |
|   |A|      |
|   ---      |
|            |
--------------

应该 return 100% 而:

--------------
|            |
|   _________|_________
|   |A       |         |
|   ---------|---------
|            |
--------------

应该 return 大约 50%。

我试过测量 globalVisibleRect、localVisibleRect、hitTest、drawableRect、focusableRect,无论视图是否完全可见,它们都是一样的。

有什么想法吗?

如果你得到视图的坐标,你可以很容易地计算出交点的面积:

intersectionArea = max(0, max(AX2, BX2) - min(AX1, BX1)) * max(0, max(AY2, BY2) - min(AY1, BY1))

据此,您可以计算联合使用的面积:

unionArea = AreaA + AreaB - intersectionArea

然后就可以确定这个面积的比例

intersectionArea / unionArea

https://math.stackexchange.com/questions/99565/simplest-way-to-calculate-the-intersect-area-of-two-rectangles

正确答案是这个---->>>

x_overlap = Math.max(0, Math.min(rect1.right, rect2.right) - Math.max(rect1.left, rect2.left)); y_overlap = Math.max(0, Math.min(rect1.bottom, rect2.bottom) - Math.max(rect1.top, rect2.top )); 重叠面积 = x_overlap * y_overlap;