• start = (Button) findViewById(R.id.start);
  • int []location= new int [ 2 ];
  • start.getLocationOnScreen(location);
  • int x=location[ 0 ]; //获取当前位置的横坐标
  • int y=location[ 1 ]; //获取当前位置的纵坐标
  • 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)

    [java] view plain copy

  • * <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)

    [java] view plain copy

  • * <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;
  •