getLocationInWindow 和 getLocationOnScreen的区别 以及computeVerticalScrollOffset

来源:互联网 发布:淘宝助理 二次验证 编辑:程序博客网 时间:2024/05/22 10:51

int[] location = new  int[2] ;

location [0]--->x坐标,location [1]--->y坐标

View.getLocationInWindow(int[] location)

一个控件在其父窗口中的坐标位置

View.getLocationOnScreen(int[] location)

一个控件在其整个屏幕上的坐标位置


getLocationOnScreen:计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标

getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标
getLeft getTopgetBottom,getRight这一组是获取相对在它父亲里的坐标


(1)computeVerticalScrollOffset():

已经向下滚动的距离,为0时表示已处于顶部。

(2)computeVerticalScrollRange():

整体的高度,注意是整体,包括在显示区域之外的。

(3)computeVerticalScrollExtent():

显示区域的高度。


图示如下:


对比图示很容易知道:

当Offset大于0时,可以继续下拉,当Offset等于0时,不可以。

当Range大于Offset加上Extent时,可以继续上拉,当Range等于Offset加上Extent时,不可以。

(可以看到上面判断上拉时多减了一个1,是因为计算过程中有些float和int的转换,多减个1是为了保险起见,最多也就是吃掉view一个像素的高度而已)


0 0
原创粉丝点击