请帮助我获取布局中 ImageView 的位置。
x = imageViewObject.getLeft();
y = imageViewObject.getTop();
希望它能帮到你!在运行时,您可以使用以下方法获取每个View
对象(包括Layouts
)的位置:
getLeft()
:视图对象的左侧位置
getTop()
:视图对象的顶部位置
getRight()
:视图对象的右侧位置
getBottom()
:视图对象的底部位置
您甚至可以使用以下方法获取位置:
getLocationOnScreen(int [] )
getLocationOnScreen(int [])
来实现此功能。位置意味着x和y以及高度和宽度?
这个布局是一个视图,该视图具有这些属性。
以下代码对我有效,我使用全局布尔变量moved
在onTouch
方法中找到值。 v.getX()
和v.getY()
获取我的imageView
对象的值。我已在设备上运行了我的apk文件,它完美地工作。希望这可以帮助到您。
joystick.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(moved){
moved = false;
xOrigin = v.getX();
yOrigin = v.getY();
mode.setText(Float.toString(xOrigin));
challenge.setText(Float.toString(yOrigin));
}
mode.setText(Float.toString(v.getX()));
challenge.setText(Float.toString(v.getY()));
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
xCoOrdinate = v.getX() - event.getRawX();
yCoOrdinate = v.getY() - event.getRawY();
//mode.setText(Float.toString(v.getX()));
//challenge.setText(Float.toString(v.getY()));
break;
case MotionEvent.ACTION_MOVE:
v.animate().x(event.getRawX() + xCoOrdinate).y(event.getRawY() + yCoOrdinate).setDuration(0).start();
if(v.getX() < xOrigin -50){
v.animate().x(xOrigin -50).setDuration(0).start();
}
else if(v.getX() > xOrigin +50) {
v.animate().x(xOrigin +50).setDuration(0).start();
}
if(v.getY() < yOrigin -50){
v.animate().y(yOrigin -50).setDuration(0).start();
}
else if(v.getY() > yOrigin +50) {
v.animate().y(yOrigin +50).setDuration(0).start();
}
break;
default:
v.setX(xOrigin);
v.setY(yOrigin);
mode.setText(Float.toString(xOrigin));
challenge.setText(Float.toString(yOrigin));
return false;
}
return true;
}
});