Android根据设备的分辨率获取位图尺寸?

时间:2013-05-09 16:35:00

标签: android variables bitmap grid minesweeper

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

现在我的解决方案是让每个矿井都成为一个特定的位置:使用这个循环:

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()方法来获取存储在我的&#34; Mine&#34;中的Bitmap的宽度。类。但这并没有成功......

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

1 个答案:

答案 0 :(得分: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中获得宽度和高度后,您可以尝试使用一些因子来确定每个网格的宽度。