返回

从微观到宏观,探索 getLocalVisibleRect 可见区域的变化推演

Android

微观视角:getLocalVisibleRect 可见区域的推演

getLocalVisibleRect 方法返回一个 Rect 对象,表示 View 在自身坐标系中的可见区域。为了理解 getLocalVisibleRect 可见区域的变化推演,我们需要从 View 的坐标系和 Rect 对象说起。

1. View 的坐标系

每个 View 都有自己的坐标系,称为局部坐标系。局部坐标系的原点位于 View 的左上角,x 轴向右延伸,y 轴向下延伸。

2. Rect 对象

Rect 对象是一个矩形区域,由四个属性定义:left、top、right 和 bottom。left 和 top 表示矩形区域的左上角坐标,right 和 bottom 表示矩形区域的右下角坐标。

3. getLocalVisibleRect 可见区域的变化推演

getLocalVisibleRect 方法返回的 Rect 对象表示 View 在自身坐标系中的可见区域。该区域会随着 View 的位置和大小的变化而发生变化。

  • 当 View 完全可见时,getLocalVisibleRect 返回的 Rect 对象与 View 的边界相同。
  • 当 View 部分可见时,getLocalVisibleRect 返回的 Rect 对象仅包含 View 的可见部分。
  • 当 View 完全不可见时,getLocalVisibleRect 返回的 Rect 对象为空。

宏观视角:getLocalVisibleRect 与 getGlobalVisibleRect 的联系与区别

getGlobalVisibleRect 方法返回一个 Rect 对象,表示 View 在屏幕坐标系中的可见区域。屏幕坐标系的原点位于屏幕的左上角,x 轴向右延伸,y 轴向下延伸。

1. 联系

getLocalVisibleRect 和 getGlobalVisibleRect 都是用于获取 View 可见区域的 API。它们的区别在于,getLocalVisibleRect 返回的 Rect 对象表示 View 在自身坐标系中的可见区域,而 getGlobalVisibleRect 返回的 Rect 对象表示 View 在屏幕坐标系中的可见区域。

2. 区别

getLocalVisibleRect 和 getGlobalVisibleRect 的主要区别在于它们所使用的坐标系不同。getLocalVisibleRect 使用的是 View 的局部坐标系,而 getGlobalVisibleRect 使用的是屏幕坐标系。

这种区别导致了两个 API 在实际开发中的应用场景有所不同。getLocalVisibleRect 通常用于获取 View 在自身容器中的可见区域,而 getGlobalVisibleRect 通常用于获取 View 在屏幕中的可见区域。

总结

getLocalVisibleRect 和 getGlobalVisibleRect 都是用于获取 View 可见区域的 API。它们的区别在于,getLocalVisibleRect 返回的 Rect 对象表示 View 在自身坐标系中的可见区域,而 getGlobalVisibleRect 返回的 Rect 对象表示 View 在屏幕坐标系中的可见区域。

在实际开发中,我们可以根据需要选择使用 getLocalVisibleRect 或 getGlobalVisibleRect 来获取 View 的可见区域。