触摸时拖动视图并返回触摸释放时的原始位置
Drag a view on touch and back to origin position on touch release
我想在整个屏幕上触摸拖动一个视图,然后在触摸释放时我想将视图带回原来的位置。
这是我的代码:
private float xCoOrdinate, yCoOrdinate;
private float top2AxOriginXCoordinate, top2AxOriginYCoordinate;
private void initControls(View view) {
top2AX = view.findViewById(R.id.top2AX);
top2AxOriginXCoordinate = top2AX.getX();
top2AxOriginYCoordinate = top2AX.getY();
addDragListener();
}
private void addDragListener() {
myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
xCoOrdinate = view.getX() - event.getRawX();
yCoOrdinate = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
view.animate().x(event.getRawX() + xCoOrdinate).y(event.getRawY() + yCoOrdinate).setDuration(0).start();
break;
case MotionEvent.ACTION_UP:
view.animate().x(top2AxOriginXCoordinate).y(top2AxOriginYCoordinate).setDuration(500).start();
break;
default:
return false;
}
return true;
}
});
}
触摸和拖动效果很好,但是当我松开触摸时它不会回到原来的位置。它位于屏幕的左上角,并留有少量的左边距。我在这里做错了什么?
top2AxOriginXCoordinate = top2AX.getX();
top2AxOriginYCoordinate = top2AX.getY();
可能这两个变量是0.0,如果是的话告诉我我会帮你的
我想在整个屏幕上触摸拖动一个视图,然后在触摸释放时我想将视图带回原来的位置。
这是我的代码:
private float xCoOrdinate, yCoOrdinate;
private float top2AxOriginXCoordinate, top2AxOriginYCoordinate;
private void initControls(View view) {
top2AX = view.findViewById(R.id.top2AX);
top2AxOriginXCoordinate = top2AX.getX();
top2AxOriginYCoordinate = top2AX.getY();
addDragListener();
}
private void addDragListener() {
myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
xCoOrdinate = view.getX() - event.getRawX();
yCoOrdinate = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
view.animate().x(event.getRawX() + xCoOrdinate).y(event.getRawY() + yCoOrdinate).setDuration(0).start();
break;
case MotionEvent.ACTION_UP:
view.animate().x(top2AxOriginXCoordinate).y(top2AxOriginYCoordinate).setDuration(500).start();
break;
default:
return false;
}
return true;
}
});
}
触摸和拖动效果很好,但是当我松开触摸时它不会回到原来的位置。它位于屏幕的左上角,并留有少量的左边距。我在这里做错了什么?
top2AxOriginXCoordinate = top2AX.getX();
top2AxOriginYCoordinate = top2AX.getY();
可能这两个变量是0.0,如果是的话告诉我我会帮你的