0

我有尺寸为 908 x 1003 的位图。我的屏幕尺寸是 480 x 800。我想全屏显示这个位图。我正在调整位图的大小,但我的屏幕上仍有空白空间(图像以全高而不是全宽显示)。

这是我的代码

我有一个名为 processesMap(908 x 1003) 的位图。

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);



    int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));
    int heightPix = (int) Math.ceil(dm.heightPixels * (dm.densityDpi / 160.0));

    Bitmap resizedBitmap = Bitmap.createScaledBitmap(processedMap, (int) widthPix, (int)heightPix, true);

    imageView.setImageBitmap(resizedBitmap);

奇怪的是,当我增加 widthPix 的大小(如 widthPix + 40)时,问题就解决了!请帮我。

4

1 回答 1

0

您的具体问题在这里:

(dm.densityDpi / 160.0)

在此语句上放置一个断点,然后评估此计算。您在没有强制转换的情况下划分 2 个整数,并且由于它在括号中,因此在乘法之前对其进行评估。最终结果是您丢失了小数部分,例如 240 / 160 => 1

用这个:

(dm.densityDpi / 160.0d)

话虽如此,Doomsknight 的评论是合理的。既然只需要处理像素,为什么要复杂化呢?

于 2012-11-11T01:56:32.827 回答