24

我正在寻找任何线索来理解这种方法。

官方 Android 的 SDK 文档中没有关于它的信息。

它返回什么样的矩形?

它是否像 MotionEvent 中那样充满了原始坐标?

如果这个视图不可见怎么办?它返回null吗?还是一些内部带有某种 VIEW_INVISIBLE 值的矩形?

有使用这种方法经验的人可以帮帮我吗?

4

1 回答 1

24

getGlobalVisibleRect的JavaDoc

/**
 * If some part of this view is not clipped by any of its parents, then
 * return that area in r in global (root) coordinates. To convert r to local
 * coordinates (without taking possible View rotations into account), offset
 * it by -globalOffset (e.g. r.offset(-globalOffset.x, -globalOffset.y)).
 * If the view is completely clipped or translated out, return false.
 *
 * @param r If true is returned, r holds the global coordinates of the
 * visible portion of this view.
 * @param globalOffset If true is returned, globalOffset holds the dx,dy
 * between this view and its root. globalOffet may be null.
 * @return true if r is non-empty (i.e. part of the view is visible at the
 * root level.
 */

getLocalVisibleRect 调用 getGlobalVisibleRect ,然后按照建议将其设为本地:

r.offset(-offset.x, -offset.y); // make r local`

所以:

  • 它不返回一个矩形,它返回一个布尔值。但它可以设置你传递的一个矩形的参数,而且必须是一个android.graphics.Rect矩形;
  • 矩形 r 将被局部坐标填充;
  • 我不确定,但我认为可见视图和不可见视图是一样的,而对于视图,它应该返回 falsevisibility="gone"
于 2013-08-18T19:12:58.243 回答