android获得控件在屏幕中的绝对坐标 getLocationInWindow 和 getLocationOnScreen

int[] location = new int[2] ;
view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标
location [0]—>x坐标,location [1]—>y坐标

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

getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标

getLeft , getTop, getBottom,getRight, 这一组是获取相对在它父亲里的坐标

获取一个按钮在整个屏幕上的绝对坐标通常涉及到计算按钮在其父容器的相对位置以及父容器在其父容器的相对位置,直至顶层容器(通常是活动的窗口或屏幕本身)。这个过程可能涉及到多个组件的位置累加。在Android开发,可以通过以下步骤来获取一个按钮的绝对坐标: 1. 首先,获取按钮相对于其父容器的坐标,使用`getLeft()`和`getTop()`方法,这两个方法分别返回按钮左上角相对于其父容器左上角的横纵坐标。 2. 然后,获取按钮父容器的绝对坐标。如果父容器是一个直接嵌入在屏幕上的布局(例如RelativeLayout),则可以使用`locationOnScreen`这个数组,通过调用父容器的`getLocationOnScreen(int[] location)`方法并将位置数组作为参数传入,这个数组会被填充父容器的左上角坐标。 3. 重复以上两步,从按钮的直接父容器开始,逐级向上遍历到最顶层容器,将每个层级的位置坐标累加起来。 示例代码如下(假设是Android环境): ```java Button myButton = findViewById(R.id.my_button); int[] location = new int[2]; // 用于存放位置的数组 // 获取按钮自身的相对位置 int relativeX = myButton.getLeft(); int relativeY = myButton.getTop(); // 获取按钮父容器的位置 ViewParent parent = myButton.getParent(); while (parent instanceof View) { View view = (View) parent; view.getLocationOnScreen(location); relativeX += location[0]; relativeY += location[1]; parent = view.getParent(); } // 此时relativeX和relativeY就是按钮在整个屏幕上的绝对坐标 ``` 这段代码首先获取按钮相对于其父容器的位置,然后逐级向上获取父容器的位置,直到顶层容器,并累加所有的位置信息,最终得到按钮在整个屏幕上的绝对坐标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值