Android获得控件在屏幕中的绝对坐标

Stella981
• 阅读 961
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 这一组是获取相对在它父亲里的坐标
如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。
onWindowFocusChanged(boolean hasFocus)中获取为好

即覆写Activity的onWindowFocusChanged(boolean hasFocus)方法
XXX_Activity:

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        int[] location1 = new int[2] ;
        view.getLocationInWindow(location1); //获取在当前窗口内的绝对坐标
        int[] location2 = new int[2] ;
        view.getLocationOnScreen(location2);//获取在整个屏幕内的绝对坐标
        //do something
    }

更多资料:

Android View各种尺寸位置相关的方法探究

PS:本文为转载,首发地址不可考,网上搜到的全是转载的,故不能贴出原地址,如果你是作者可以留言原地址或者要求删除。

本文同步分享在 博客“他叫自己MR张”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
SFML从入门到放弃(3) 视角和碰撞检测
SFML从入门到放弃(3)视角和碰撞检测视角window.draw();所画出的对象是在世界坐标的绝对位置。视角可以选定在窗口中显示世界坐标下的的哪一个区域。sf::Viewinit_view(){sf::Viewvi(sf::Vector2f(0,0),sf
LinMeng LinMeng
4年前
解决ios软键盘收回时屏幕空白问题
添加事件:window.scrollTo(x,y)在input的释焦事件中添加blur事件,参数X要在窗口文档显示区左上角显示的文档的x坐标。参数y要在窗口文档显示区左上角显示的文档的y坐标。添加jQuery插件mounted(){//解决ios软键盘弹出屏幕空白$("input,select,te
Easter79 Easter79
3年前
SVG的坐标系统
在开始学习如何绘图之前,我们先来看一下SVG的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG也使用了网格坐标系统。这种坐标和我们以前在数学中学过的坐标有些不同。数学中的坐标是由x轴(水平横向延伸)和y轴(垂直纵向延伸)交织组成,交点被称为坐标原点(0,0)。原点沿x轴向右为正值,反之为负值,沿y轴向上
Wesley13 Wesley13
3年前
NGUI 屏幕适配(2D UI)
博客内容基于NGUI.3.11.2,讲述NGUI2DUI。设备无关坐标以OpenGL为例,经过各种图形阶段(stage)后,几何形状最终被转换成像素显示在屏幕上。设备屏幕坐标以像素为单位,是设备相关的。不同设备分辨率不一样,即使同一设备,不同窗口的大小也不一样。在不关注具体设备的情况下绘制几何形状,则需要设备无关坐标系统。
Stella981 Stella981
3年前
SVG 坐标系统
在开始学习如何绘图之前,我们先来看一下SVG的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG也使用了网格坐标系统。这种坐标和我们以前在数学中学过的坐标有些不同。数学中的坐标是由x轴(水平横向延伸)和y轴(垂直纵向延伸)交织组成,交点被称为坐标原点(0,0)。原点沿x轴向右为正值,反之为负值,沿y轴向上
Stella981 Stella981
3年前
JavaScript获取Input输入框的屏幕绝对位置
需求:使用JavaScript,在input输入框被点击时获取input坐标的绝对位置,原理:根据js中的元素offsetLeft、offsetTop获取相对于父元素的X、Y坐标相对位置,然后遍历到最顶层的body元素,逐步叠加距离,最终获取的位置即为input的绝对位置。代码如下://获取x坐标functiongetXPo
Easter79 Easter79
3年前
SVG 坐标系统
在开始学习如何绘图之前,我们先来看一下SVG的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG也使用了网格坐标系统。这种坐标和我们以前在数学中学过的坐标有些不同。数学中的坐标是由x轴(水平横向延伸)和y轴(垂直纵向延伸)交织组成,交点被称为坐标原点(0,0)。原点沿x轴向右为正值,反之为负值,沿y轴向上
Stella981 Stella981
3年前
SVG的坐标系统
在开始学习如何绘图之前,我们先来看一下SVG的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG也使用了网格坐标系统。这种坐标和我们以前在数学中学过的坐标有些不同。数学中的坐标是由x轴(水平横向延伸)和y轴(垂直纵向延伸)交织组成,交点被称为坐标原点(0,0)。原点沿x轴向右为正值,反之为负值,沿y轴向上
Stella981 Stella981
3年前
PCB javascript解析Gerber274X格式实现方法
解析钻Gerber274X格式前首先得了解此格式,这样才能更好的解析呀。一个Gerber274X里面包含的基本信息如下:1.单位:公式mm,英制inch2.省零方式:前省零,后省零3.坐标方式:绝对坐标,相对坐标4.坐标位数:3:5,2:65.GerberD码形状6.Gerber坐标信息更多Gerber274X格式
Wesley13 Wesley13
3年前
Unity中鼠标拖动物体移动的算法
鼠标拖动物移动在游戏设计上用的非常多,像飞机射击游戏,我来分享下我的思路:  我的思路: 因为鼠标的屏幕坐标是二维的,物体是世界坐标,三维的。首先将鼠标的屏幕坐标转换为三维的世界坐标,这样为了计算鼠标与物体位置之间的距离,再将移动后的鼠标的屏幕坐标转换为世界坐标,加上之前的距离量,将和值赋给物体坐标,就可以实现了。C算法实现:IEnumera