本篇的内容是,在前一篇的基础上加入了撤销的功能。撤销其实就是将当前的用户界面恢复到这次滑动值前的样子。我实现撤销的主要原理是,将每次滑动后界面上的格子和对应的数字记录下来,当然还有分数,把这些数据写入一个栈中,然后点击撤销操作的时候,将栈顶pop掉,读取下一个栈中的对象,并根据对象中存储的数据重新绘制界面。
下面是我用于存储每次界面情况的类,在这个类中保存了界面中主要的三个数据,空白格、数字格和当前的分数。
package com.example.t2048;
import java.util.ArrayList;
import java.util.List;
public class History {
//对应主activity中的空格列表
private List<Integer> spaceList;
//对应主activity中的数字列表
private NumberList numberList;
//对应主activity中的当前分数
private int score = 0;
/**
* 构造方法
* @param sl 空格列表
* @param nl 数字列表
* @param s 当前分数
*/
History(List<Integer> sl, NumberList nl, int s) {
spaceList = new ArrayList<Integer>(sl);
numberList