在 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 會回到上一次的位置。