如何将正方形网格按比例缩放适应于任何手机的尺寸

3

你好,我正在尝试在画布上制作一个8×8的正方形网格。我已经成功制作了一个网格,但它却是矩形的,而我制作的游戏需要一个正方形网格。请问怎样修改我的代码才能制作一个适应手机屏幕的正方形网格呢?

float testWidth = (getWidth() - 16f) / 9f;
float testHeight = (getHeight() - 16f) / 9f;
for (int i = 0; i < 9; i++) {
            canvas.drawLine(padding + testWidth* i, padding, padding
                    + testWidth * i, testHeight* 8+padding, dark);
            canvas.drawLine(padding,  padding+testHeight* i, testWidth* 8
                    + padding, padding+testHeight* i, dark);
        }

编辑:我现在能做一个正方形的网格,但我不知道如何将网格居中到手机的中间。


1个回答

4

你需要选择最短的宽度或高度,用它来构建网格。(这样你的网格才能适配屏幕)

例如:

float gridSide = 0;
if (getWidth() > getHeight()) {
  gridSide = getHeight();
}
else {
  gridSide = getWidth();
}

appsroxcom提供的更简单的逻辑:

float gridSide = Math.min(testWidth(), testHeight());

使用 gridSide 作为网格的总长度和总宽度


更简单的逻辑:float cellSize = Math.min(testWidth, testHeight); - appsroxcom
当然啦!谢谢。还有一个问题。这意味着网格占据了画布的3/4,底部1/4完全空白。我该如何将网格置于画布中心? - user1953208
将视图偏移 ABS(高度-宽度)/2 - Todd Sjolander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接