6

据我了解,当我们将 int[2] 位置数组传递给 view.getLocationOnScreen(location) 时,我们将获得该视图的左上角坐标。但是当我调试这个函数时,我看到那个位置返回到那个视图的右、顶坐标。我的屏幕是 480x800,视图的边距是 40,所以视图的右坐标是 440,它等于从 view.getLocationOnScreen(location) 返回的 location[0]。为什么位置 [0] 返回视图的正确坐标?

4

2 回答 2

8

它是该视图的左上角坐标的精确返回。我得到了错误的值,因为在我调用 view.getLocationOnScreen(location) 之前我的视图仍未呈现。

于 2012-08-03T02:19:16.257 回答
0

为了确认接受的答案,根据 ; 的实现,坐标确实似乎是视图的左上角getLocationOnScreen;此外,y 轴是倒置的。

public void getLocationOnScreen(@Size(2) int[] outLocation) {
    getLocationInWindow(outLocation);

    final AttachInfo info = mAttachInfo;
    if (info != null) {
        outLocation[0] += info.mWindowLeft;
        outLocation[1] += info.mWindowTop;
    }
}
于 2018-11-23T18:11:37.580 回答