Android postScale未按预期扩展

时间:2013-05-14 19:09:29

标签: android bitmap scaling

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

我使用的功能在

之下
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。

现在的问题是,当我使用这些值对其进行postScale时,它并没有按照我的预期进行缩放。例如,放入与我的测试设备大小相同的背景图像,然后输出的Bitmap的大小是683乘368,这对我来说没有任何意义!我也尝试过preScale和setScale,但这种情况也没有改变。

有没有其他方法可能更容易实际工作,还是只是我不理解这个?

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

2 个答案:

答案 0 :(得分:0)

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

Matrix max = new Matrix();
max.setScale(Vars.screenWidthMulti, Vars.screenHeightMulti);

答案 1 :(得分:0)

我通过将比例因子乘以1.5来计算出来,这很奇怪,但它确实有效。