我正在为我的游戏创建一个网格,但我希望网格的大小可以根据手机的尺寸而变化。当我运行代码时(注意:我从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);
}
编辑:我现在可以制作一个可以缩放到手机尺寸的网格,但它是一个矩形网格。它看起来有点傻,我需要一个正方形。如果屏幕更大,也许我应该做更大的填充?
答案 0 :(得分: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);
}
另外,正如尼古拉斯建议的那样,你没有考虑8像素填充。所以,在你想要的onSizeChanged
中:
testWidth = (w - 16f) / 9f;
testHeight = (h - 16f) / 9f;