0

我有很多位图,现在我正在尝试根据屏幕尺寸进行缩放,我这样做的方法是将当前设备的屏幕尺寸除以我的测试手机尺寸,因为所有图像都是根据该屏幕尺寸制作的。

我使用的功能如下

public Bitmap resizeBitmap(Bitmap b){
      int width = b.getWidth();
      int height = b.getHeight();
      Matrix max = new Matrix();

      max.postScale(Vars.screenWidthMulti, Vars.screenHeightMulti);
      Bitmap resizedBitmap = Bitmap.createBitmap(b, 0, 0, width, height, max, false);
      return resizedBitmap;
}

screenWidthMulti 和 screenHeightMulti 是通过将当前屏幕尺寸除以与我的测试设备屏幕相同的浮点值来获得的。现在那部分工作正常。如果我使用屏幕尺寸为 1024/552 的设备并且我的设备是 960/540,那么我得到的缩放值是 1.06666667 的宽度和 1.02222223 的高度,这很好。

现在的问题是,当我使用这些值对其进行缩放时,它不会像我期望的那样缩放它们。例如,放入与我的测试设备大小相同的背景图像,然后输出的位图大小为 683 x 368,这对我来说没有任何意义!我也尝试过使用 preScale 和 setScale ,但这也没有变得更好。

有没有其他方法可能更容易并且实际有效,或者只是我不理解这一点?

编辑:我尝试在 setScale 中输入 2f 的值,结果很奇怪,540*2 变成了 720,我无法理解。

4

2 回答 2

0

您刚刚创建了矩阵,因此您不需要 post 或 preScale,只需使用 setScale:

Matrix max = new Matrix();
max.setScale(Vars.screenWidthMulti, Vars.screenHeightMulti);
于 2013-05-14T20:24:27.540 回答
0

我通过将比例因子乘以 1.5 来解决这个问题,虽然很奇怪,但它确实有效。

于 2013-06-20T07:40:13.173 回答