据我了解,当我们将int[2] location数组传递到view.getLocationOnScreen(location)中时,我们将获得该视图的左上坐标。但是当我调试此函数时,我发现location返回该视图右上角的坐标。我的屏幕尺寸为480x800,我将视图的右边距设置为40,因此视图的右坐标为440,这等于从view.getLocationOnScreen(location)返回的location [0]。为什么location [0]返回视图的右坐标?
据我了解,当我们将int[2] location数组传递到view.getLocationOnScreen(location)中时,我们将获得该视图的左上坐标。但是当我调试此函数时,我发现location返回该视图右上角的坐标。我的屏幕尺寸为480x800,我将视图的右边距设置为40,因此视图的右坐标为440,这等于从view.getLocationOnScreen(location)返回的location [0]。为什么location [0]返回视图的右坐标?
这是该视图左上角坐标的准确返回结果。在调用view.getLocationOnScreen(location)之前,由于我的视图尚未呈现,所以我得到了错误的值。
为确认被接受的答案,根据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;
}
}