本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
View .getLocationInWindow(int[] location)

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

View .getLocationOnScreen( int[] location)

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

getLocationInWindow是以B为原点的C的坐标

getLocationOnScreen以A为原点。

下面是getLocationOnScreen示例

start = (Button) findViewById(R.id.start);
		int []location=new int[2];
		start.getLocationOnScreen(location);
		int x=location[0];//获取当前位置的横坐标
		int y=location[1];//获取当前位置的纵坐标

下面是 getLocationInWindow 示例

start = (Button) findViewById(R.id.start);
		int []location=new int[2];
		start.getLocationInWindow(location);
		int x=location[0];//获取当前位置的横坐标
		int y=location[1];//获取当前位置的纵坐标

==================================================================================================

附上源代码

==================================================================================================

View .getLocationInWindow(int[] location) * <p>Computes the coordinates of this view in its window. The argument * must be an array of two integers. After the method returns, the array * contains the x and y location in that order.</p> * @param location an array of two integers in which to hold the coordinates public void getLocationInWindow(int[] location) { if (location == null || location.length < 2) { throw new IllegalArgumentException("location must be an array of two integers"); if (mAttachInfo == null) { // When the view is not attached to a window, this method does not make sense location[0] = location[1] = 0; return; float[] position = mAttachInfo.mTmpTransformLocation; position[0] = position[1] = 0.0f; if (!hasIdentityMatrix()) { getMatrix().mapPoints(position); position[0] += mLeft; position[1] += mTop; ViewParent viewParent = mParent; while (viewParent instanceof View) { final View view = (View) viewParent; position[0] -= view.mScrollX; position[1] -= view.mScrollY; if (!view.hasIdentityMatrix()) { view.getMatrix().mapPoints(position); position[0] += view.mLeft; position[1] += view.mTop; viewParent = view.mParent; if (viewParent instanceof ViewRootImpl) { // *cough* final ViewRootImpl vr = (ViewRootImpl) viewParent; position[1] -= vr.mCurScrollY; location[0] = (int) (position[0] + 0.5f); location[1] = (int) (position[1] + 0.5f); View .getLocationOnScreen( int[] location) * <p>Computes the coordinates of this view on the screen. The argument * must be an array of two integers. After the method returns, the array * contains the x and y location in that order.</p> * @param location an array of two integers in which to hold the coordinates public void getLocationOnScreen(int[] location) { getLocationInWindow(location); final AttachInfo info = mAttachInfo; if (info != null) { location[0] += info.mWindowLeft; location[1] += info.mWindowTop; ====================================================================================

作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

转载请保留原文地址 http://blog.csdn.net/ouyang_peng

====================================================================================