0

画面を四角形に分割しましたが、ループに aa を使用しているため、毎回作り直される四角形を保存していません。それらを配列のように格納するにはどうすればよいですか?

     public void drawGrid() {
    //android.os.Debug.waitForDebugger();
    int height,width;
    int column,row;
    int maxColumn,maxRow;
    maxColumn = 4;
    maxRow = 4;
    column = 0;
    row = 0;
    height = c.getHeight()/maxRow;
    width = c.getWidth()/maxColumn;
    Paint pg = new Paint();
    Rect[] test[];


    for(int i = 0;i < 5; i++) {
        int srcX = column * width;
        int srcY = row * height;
        Rect src =new Rect(srcX,srcY,srcX + width, srcY +height);
        pg.setColor(Color.WHITE);
        pg.setStyle(Paint.Style.STROKE);
        pg.setStrokeWidth(5);
        c.drawRect(src, pg);
        if (column == maxColumn && row == maxRow){
            i = 5;
        } else {i=0;}
        if (column == maxColumn){
            row = row + 1;
            column = 0;
        } else {column = column + 1;}

    }



}
4

3 に答える 3

2

描画操作中にオブジェクトをインスタンス化しないように、事前にそれらを割り当てます。したがって、必要な四角形の数を決定するたびに (つまり、常に同じである場合は、コンストラクターでそれらを初期化します)。このようなもの:

Rect[] rects = new Rect[rectCount];
for(int i = 0; i < rectCount; i++) rects[i] = new Rect();

次に、描画ループで次を使用します。

rects[i].set(srcX, srcY, srcX + width, srcY + height);

描画操作中は、可能な限りオブジェクトの割り当てを避ける必要があります。

編集: 2D 配列の場合:

Rect[][] rects = new Rect[rowCount][colCount];
for(int i = 0; i < rowCount; i++) {
    for(int j = 0; j < colCount; j++) {
        rects[i][j] = new Rect();
    }
}

次に、ループでは、同じことです。

rects[row][col].set(srcX, srcY, srcX + width, srcY + height);
于 2013-03-05T21:16:32.940 に答える
1

常に固定数の Rectangle を使用するつもりですか? あなたは配列リストを検討したいかもしれませんか?

ArrayList<Rect> rects = new ArrayList<Rect>();
rects.add(new Rect(srcX,srcY,srcX + width, srcY +height));

これらのことを使用すると、多くの便利なことを簡単に行うことができます。いくつかの例を次に示します

于 2013-03-05T21:22:21.737 に答える
1
Rect rectArray[] = new Rect[5];

次に、ループ内で:

rectArray[i] = new Rect(srcX,srcY,srcX + width, srcY +height);
于 2013-03-05T21:14:35.353 に答える