【问题标题】:Android postScale not scaling as expectedAndroid postScale 未按预期缩放
【发布时间】:2013-05-14 19:09:29
【问题描述】:

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

我使用的函数如下

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,我无法理解。

【问题讨论】:

    标签: android bitmap scaling


    【解决方案1】:

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

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

    【讨论】:

    • 我现在测试了它,它甚至没有任何改变。感谢您尝试提供帮助。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多