getLocationInWindow 和 getLocationOnScreen的区别 以及computeVerticalScrollOffset

本文介绍了Android中视图的坐标系统,包括`getLocationInWindow`和`getLocationOnScreen`的区别,以及如何通过`computeVerticalScrollOffset`等方法计算视图的滚动距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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一个像素的高度而已)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值