0

この状況をアプリケーションに実装する方法についてアドバイスが必要です。

bitmpapsのさまざまな状態を保存するために使用している の配列があるCanvasので、将来それらを使用できます。これが私が使用しているコードです:

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

したがって、基本的には、ユーザーのアクションに応じて、最後の 5 つのビットマップのみを保存したいと考えています。私が学びたいことは、常に最新の 5 つのビットマップを保持できるように配列を更新する方法です。

ここに私が意味するものがあります:

Bitmaps [1,2,3,4,5] -> ユーザーがクリックした後、最初のビットマップを削除し、配列を並べ替えて、新しいものを最後に保存したいので、配列は次のようになります: Bitmaps[ 2,3,4,5,6];

それを行うための最良の方法である提案/アドバイスはありますか?

前もって感謝します!

4

1 に答える 1

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;
    }
}
于 2012-05-10T07:25:37.587 に答える