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

View.getLocationInWindow()、View.getLocationOnScreen()

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

getLocationOnScreen、getLocationInWindow区别

View.getLocationInWindow(@Size(2) int[] outLocation)

getLocationInWindow是以B为原点的C的坐标
计算该视图在它所在的widnow的坐标x,y值,获取在整个窗口内的绝对坐标

View.getLocationOnScreen(@Size(2) int[] outLocation)

getLocationOnScreen是以A为原点的C的坐标

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

以上2种方法得到绝对位置的方法只在有弹出窗时会有区别。

View.getLeft() , View.getTop(), View.getBottom(),View.getRight()

获取相对父容器的坐标

MotionEvent.getX(),MotionEvent.getRawX()

  • MotionEvent.getX():相对于自身左上角的x坐标
  • MotionEvent.getRawX():相对于屏幕左上角的x坐标值
坚持原创技术分享,您的支持是对我最大的鼓励!