Android更新位图/队列数组

时间:2012-05-10 07:08:43

标签: android arrays bitmap

我需要一些建议如何在我的应用程序中实现这种情况。

我有bitmpaps数组,我用它来存储Canvas的不同状态,所以我将来可以使用它们。以下是我使用的代码:

private Bitmap[] temp;
// on user click happens this ->
if(index<5){
            temp[index] = Bitmap.createBitmap(mBitmap);
            index++;
}

所以基本上我只想保存最后5个位图,具体取决于用户的操作。我想学的东西是如何更新我的数组,所以我总能拥有最后5位图。

这就是我的意思:

  

位图[1,2,3,4,5] - &gt;用户点击后我想删除第一个位图,重新排序数组并将新数据保存为最后一个..所以我的数组应如下所示:Bitmaps [2,3,4,5,6];

任何建议/建议是最好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我刚写了这个...... 使用此代码初始化:

Cacher cach = new Cacher(5);
//when you want to add a bitmap
cach.add(yourBitmap);
//get the i'th bitmap using
cach.get(yourIndex);

请记住,您可以重新实现函数get以返回第i个“旧”位图

public class Cacher {
    public Cacher(int max) {

        this.max = max;
        temp = new Bitmap[max];
        time = new long[max];
        for(int i=0;i<max;i++)
            time[i] = -1;
    }
    private Bitmap[] temp;
    private long[] time;
    private int max = 5;
    public void add(Bitmap mBitmap) {
        int index = getIndexForNew();
        temp[index] = Bitmap.createBitmap(mBitmap);

    }
    public Bitmap get(int i) {
        if(time[i] == -1)
            return null;
        else
            return temp[i];
    }
    private int getIndexForNew() {
        int minimum = 0;
        long value = time[minimum];
        for(int i=0;i<max;i++) {
            if(time[i]==-1)
                return i;
            else {
                if(time[i]<value) {
                    minimum = i;
                    value = time[minimum];
                }
        }
        return minimum;
    }
}