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
正确答案是这个---->>>
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;
我试图指出某个视图(比如视图 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
正确答案是这个---->>>
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;