Android - 获取视图的可见区域?

aro*_*oth 26 java layout android

假设我有一个View被另一个部分掩盖的Android View.例如,假设掩蔽视图在其中心具有透明的矩形"窗口",并且我的视图在窗口下方居中并且具有大于窗口尺寸的尺寸.在这种情况下,视图的一些矩形部分将是可见的,其余部分被掩模遮挡.

所以我的问题是,是否有任何直接的方法来检索可见区域的位置和尺寸,无需访问掩蔽视图本身(所以不知道掩模的"窗口"本身有多大)?

我试过调用getLocalVisibleRect(),听起来很有希望,但这似乎只是返回视图的布局矩形而不是实际可见的矩形.

Abh*_*uch 12

这对游戏来说已经很晚了,但我怀疑getGlobalVisibleRect你做到了什么.

  • 延迟回复,但getGlobalVisibleRect似乎只计算可见部分,如果视图被其中一个父母限制(切断).如果另一个视图将其覆盖在relativelayout之类的内容中,则不会.在这种情况下,getGlobalVisibleRect给出整个视图的矩形,而不仅仅是掩盖视图未覆盖的部分 (11认同)

mou*_*mou 6

我已经使用getWindowVisibleDisplayFrame方法来确定视图是否部分可见或不确定软键盘是否打开。你可以尝试一下。

Rect r = new Rect();
// r will be populated with the coordinates of     your view
// that area still visible.
rootView.getWindowVisibleDisplayFrame(r);
Run Code Online (Sandbox Code Playgroud)


Vik*_*rla 1

这不起作用:http://developer.android.com/reference/android/view/View.html#getDrawingRect (android.graphics.Rect)

文档说它可以满足您的要求。

  • 不,它给出的结果与调用 `getWidth()` 和 `getHeight()` 相同(即总视图大小)。正如文档所述,“getDrawingRect()”“用“getScrollX()”、“getScrollY()”、“getWidth()”和“getHeight()”中的值填充输出矩形”。在这种情况下,`scrollX` 和 `scrollY` 值将为 0,因为没有进行滚动。 (2认同)