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;