首页 > 解决方案 > 用于填充视图的 Android 网格

问题描述

我正在尝试使用 Kotlin 在 Android Studio 中制作游戏,目前我使用两个用于绘制点的 for 循环(1 个用于 cols,1 个用于行)绘制了一个网格。我希望这些点填充视图,而不是网格周围的空白区域。有任何想法吗?

val columns = 5
val rows = 5 

var xPos: Float = width / (columns + 1)
var yPos: Float = height / (rows + 1)

        for (col in 1..columns) {
            for (row in 1..rows) {
                canvas.drawPoint(col*xPos, row*yPos, paint)
             }
         }

我得到了什么: 我得到了什么 d

我想要的是: 在此处输入图像描述

标签: androidkotlingame-development

解决方案


你需要在边缘周围留一点空间。所以你可以有一个填充变量,它应该是你的点直径的一半加上你想要的白色像素。您可能会使用恒定的 DIP 单位和屏幕密度来计算尺寸,就像您可能为油漆所做的那样来获得点直径。

然后您可以在计算中使用填充。例如,如果您有五列,要获得点之间的空间,您希望在减去两边的填充后将宽度除以四。

val padding = /* ... */
val columns = 5
val rows = 5 
val hSpacing = (width - (2 * padding)) / (columns - 1)
val vSpacing = (height - (2 * padding)) / (rows - 1)

for (i in 0..columns)
    for (j in 0..rows)
        canvas.drawPoint(padding + i * hSpacing, padding + j * vSpacing, paint)

推荐阅读