【发布时间】: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,我无法理解。
【问题讨论】: