2

ゲーム用のグリッドを作成していますが、電話の寸法に応じてグリッドのサイズを変更したいと考えています。コードを実行すると (注: ondraw から多くを削除し、行 atm のみを考慮しました)、HTC Desire と Wildfire の両方でグリッドのサイズが同じであるように見えます - これにより、グリッドは山火事で完璧に見えます、しかし、欲望のグリッドの下に巨大なスペースがあります-おそらく欲望の画面が大きいのでしょうか? 私が尋ねているのは...

グリッドを電話の寸法に合わせるにはどうすればよいですか - グリッドが電話の画面の大部分を占めるようにしたいが、マージンを持たせたい.Thanks

   protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        padding = 8;
        for (int i = 0; i < 9; i++) {
            canvas.drawLine(padding + testWidth* i, padding, padding
                    + testWidth * i, testWidth* 8+padding, dark);
            canvas.drawLine(padding,  padding+testWidth* i, testWidth* 8
                    + padding, padding+testWidth* i, dark);
        }
    }

}
    public void onSizeChanged(int w, int h, int oldw, int oldh) {
        testWidth= w / 9f;
        testHeight = h / 9f;
        border = w;
        getRect(selX, selY, selRect);
        super.onSizeChanged(w, h, oldw, oldh);

    }

編集: 携帯電話の寸法に合わせて拡大縮小するグリッドを作成できるようになりましたが、これは長方形のグリッドです。ちょっとばかげているように見えます。四角いものが必要です。画面が大きい場合は、パディングを大きくする必要がありますか?

4

2 に答える 2

1

この答えはNicolasBrownの答えを補足するものですが、いくつかのローカル変数を導入することで、問題をもう少しよく特定できるかもしれません。たとえば、元のループを次のように置き換えることができます。

padding = 8;
for (int i = 0; i < 9; i++) {
    int xposition = padding + testWidth * i;
    int yposition = padding + testHeight * i;
    // Horizontal line
    canvas.drawLine(padding, yposition, padding + testWidth * 8, yposition, dark);
    // Vertical line
    canvas.drawLine(xposition, padding, xposition, padding + testHeight * 8, dark);
}

また、ニコラスが示唆したように、あなたは8ピクセルのパディングを考慮していません。だから、あなたonSizeChangedが望むのは:

testWidth = (w - 16f) / 9f;
testHeight = (h - 16f) / 9f;
于 2013-02-26T00:12:21.087 に答える
0

問題は入力ミスです。コピーして貼り付けtestWidthて、変更するのを忘れたようです。これを試して:

protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        padding = 8;
        for (int i = 0; i < 9; i++) {
            canvas.drawLine(padding + testWidth* i, padding, padding
                    + testWidth * i, testWidth* 8+padding, dark);
            canvas.drawLine(padding,  padding+testHeight* i, testHeight* 8
                    + padding, padding+testHeight* i, dark);
        }
    }
于 2013-02-25T23:10:30.367 に答える