2

我正在为我的游戏创建一个网格,但我希望网格的大小会有所不同,具体取决于手机的尺寸。当我运行代码时(注意:我从 ondraw 中删除了很多,只关心行 atm),看起来网格的大小在我的 HTC Desire 和 Wildfire 上是相同的 - 这使得网格在野火上看起来很完美,但是在欲望的网格下方有一个巨大的空间 - 因为欲望屏幕更大?我要问的是...

我如何使网格缩放到手机尺寸 - 我希望网格占据手机屏幕的大部分,但有一个边距。谢谢

   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

这个答案是对 Nicolas Brown 的答案的补充,但您可以通过引入更多局部变量来更好地识别您的问题。例如,您的原始循环可以替换为:

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);
}

此外,正如 Nicolas 建议的那样,您没有考虑 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 回答