在 Android 中实现拖放操作的撤销与恢复,可以通过以下几个步骤来完成:
创建一个自定义 View,例如 MyDraggableView,并在其中实现拖动功能。
为 MyDraggableView 添加一个变量,用于存储上一次的位置信息,例如 private PointF lastPosition;
。
在 MyDraggableView 的构造函数中初始化 lastPosition。
public MyDraggableView(Context context, AttributeSet attrs) {
super(context, attrs);
lastPosition = new PointF(0, 0);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 记录按下时的位置
lastPosition.set(getX(), getY());
break;
case MotionEvent.ACTION_MOVE:
// 计算移动的距离
float dx = event.getX() - getWidth() / 2;
float dy = event.getY() - getHeight() / 2;
// 更新 View 的位置
setX(getX() + dx);
setY(getY() + dy);
break;
case MotionEvent.ACTION_UP:
// 手指抬起时,将当前位置设置为 lastPosition
lastPosition.set(getX(), getY());
break;
}
return true;
}
Button undoButton = findViewById(R.id.undo_button);
undoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 将 MyDraggableView 的位置恢复到上一次的位置
myDraggableView.setX(myDraggableView.lastPosition.x);
myDraggableView.setY(myDraggableView.lastPosition.y);
}
});
这样,你就实现了在 Android 中拖放操作的撤销与恢复功能。当用户点击撤销按钮时,MyDraggableView 会回到上一次的位置。