0

我目前正在尝试创建一个由多个正方形组成的网格(有一天应该是扫雷网格)。

现在,我让每个矿井获得特定位置的解决方案是使用这个循环:

for(int i = 0; i < cols; i++) 
{
    for(int j = 0; j < rows; j++) 
    {
        mines[i][j].setCoordinates(xCounter, yCounter);
        xCounter+=150; 
    }
    yCounter+=150;
    xCounter = 0;
}

现在 150 应该显示一个正方形的宽度或高度,因为如果一个地雷在 (0,0) 上,那么下一个地雷应该在 (minewidth,0) 上以适合和舒适。

但现在我的问题是,我怎样才能独立于这 150 人?

我通过尝试哪个数字使网格没有间距来得到这个数字。但是当我使用较低密度的设备时,图像会更小,但彼此之间的距离将保持 150 像素。

现在我怎样才能让一些东西通常独立于这个常数?

首先,我认为我可以使用 .getWidth() 方法来获取存储在“我的”类中的位图的宽度。但这并没有成功,所以......

有没有人想创建一个独立于设备密度的网格?

4

1 回答 1

0

您可以尝试获取屏幕的宽度和高度(以 dp 为单位)并使用一个因子来确定每个网格的宽度。

您可以在应用程序类中添加以下代码,

DisplayMetrics displayMetrics = applicationContext.getResources().getDisplayMetrics();
int absoluteWidthPx = displayMetrics.widthInPixels;
int abduluteHeightPx = displayMetrics.heightInPixels;

float scalingFactor = displayMetrics.density;

现在您可以找到屏幕宽度和高度的 dp 值,

/** pixels = densityIndependantPixels * (dotsPerInch/160), based on this **/
int dpWidth = (int)(absoluteWidthPx /scalingFactor);
int dpHeight = (int)(abduluteHeightPx /scalingFactor);

在 dp 中获得宽度和高度后,您可以尝试使用一些因素来确定每个网格的宽度。

于 2013-05-09T17:18:12.377 回答