Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
游戏网格将无法针对android上的不同手机进行适当扩展_Android - Fatal编程技术网

游戏网格将无法针对android上的不同手机进行适当扩展

游戏网格将无法针对android上的不同手机进行适当扩展,android,Android,我正在为我的游戏创建一个网格,但我希望网格的大小根据手机的尺寸而变化。当我运行代码时(注意:我从ondraw中删除了很多,只关心atm行),我的HTC Desire和Wildfire上的网格大小似乎是一样的-这使得Wildfire上的网格看起来很完美,但是Desire上的网格下有一个巨大的空间-可能是因为Desire屏幕更大?我想问的是 我如何使网格缩放到手机的尺寸-我希望网格占据手机屏幕的大部分,但有一个余量。谢谢 protected void onDraw(Canvas canvas)

我正在为我的游戏创建一个网格,但我希望网格的大小根据手机的尺寸而变化。当我运行代码时(注意:我从ondraw中删除了很多,只关心atm行),我的HTC Desire和Wildfire上的网格大小似乎是一样的-这使得Wildfire上的网格看起来很完美,但是Desire上的网格下有一个巨大的空间-可能是因为Desire屏幕更大?我想问的是

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

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

    }
受保护的void onDraw(画布){
super.onDraw(帆布);
填充=8;
对于(int i=0;i<9;i++){
画布.抽绳(padding+testWidth*i,padding,padding
+testWidth*i,testWidth*8+填充,黑色);
画布.抽绳(填充,填充+testWidth*i,testWidth*8
+填充,填充+测试宽度*i,暗);
}
}
}
已更改尺寸上的公共空隙(整数w、整数h、整数oldw、整数oldh){
测试宽度=w/9f;
试验高度=h/9f;
边界=w;
getRect(selX,selY,selRect);
super.onSizeChanged(w,h,oldw,oldh);
}

编辑:我现在可以制作一个可以缩放到手机尺寸的网格,但它是一个矩形网格。看起来有点傻,我需要一个正方形的。如果屏幕更大,也许我应该让填充更大?

问题在于键入错误。似乎您复制并粘贴了
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);
        }
    }
受保护的void onDraw(画布){
super.onDraw(帆布);
填充=8;
对于(int i=0;i<9;i++){
画布.抽绳(padding+testWidth*i,padding,padding
+testWidth*i,testWidth*8+填充,黑色);
画布.抽绳(填充,填充+测试高度*i,测试高度*8
+填充,填充+测试高度*i,暗);
}
}

这个答案补充了尼古拉斯·布朗的答案,但通过引入更多的局部变量,您可能会更好地识别您的问题。例如,原始循环可以替换为:

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

我试着在我的desire S上运行它,它是相同的网格,但现在网格仍然占据屏幕的4/6,而屏幕的其他2/6有更多的行,没有列(如果这有意义的话)。它必须是8x8网格。抱歉,我想做一个8x8战列舰网格,但是要按照手机尺寸缩放网格。我想问题是你应该在
testHeight
的位置设置
testHeight
。另一件事是你没有考虑8像素的填充。是的,我像你说的那样改变了测试宽度。它使网格可以缩放到手机上,但是网格更像是一个矩形而不是正方形,看起来很傻。我想要在中心有一个漂亮的正方形网格。谢谢你的帮助。嗯,我用了你的代码,它成功了。网格被适当地缩放到手机上,但网格更为矩形,我希望它是方形的。这是一个战舰游戏,所以它看起来只是一个矩形网格愚蠢。谢谢你的帮助,顺便说一句,谢谢
testWidth = (w - 16f) / 9f;
testHeight = (h - 16f) / 9f;