1

特定のビュー (たとえば、ビュー A) が 100% 表示されているかどうかを示しようとしています。つまり、100x100 ビューの場合、10000 ピクセルすべてが表示されるようにしたいと考えています。

サンプル:

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

100 %を返す必要があります。

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

約 50% を返す必要があります。

globalVisibleRect、localVisibleRect、hitTest、drawableRect、focusableRect を測定してみましたが、ビューが完全に表示されているかどうかに関係なく、すべて同じです。

何か案は?

4

2 に答える 2

1

If you get the co-ordinates of the views, you can easily compute the area of the intersection:

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

From this, you can compute the area used by the union:

unionArea = AreaA + AreaB - intersectionArea

And you can then determine the ratio of this area

intersectionArea / unionArea

于 2015-11-23T15:40:41.773 に答える
0

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;

于 2020-07-05T12:59:44.793 に答える