繁体   English   中英

Android获取位图尺寸取决于设备的分辨率?

[英]Android getting Bitmap dimensions depending on resolution of device?

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

现在,我的解决方案是通过使用以下循环来使每个地雷都处于特定位置:

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()方法来获取存储在“矿”类中的位图的宽度。 但这并没有解决...

有没有人想过要创建一个与设备密度无关的网格?

您可以尝试获取屏幕的宽度和高度(以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中的宽度和高度,就可以尝试使用一些因素来确定每个网格的宽度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM