Android奇怪的缩放

时间:2013-05-16 14:27:13

标签: android scale

我无法理解android缩放是如何工作的,我使用了一个矩阵并使用postScaled大小540到960的位图,当我缩放1.067和1.023时,结果是682乘368。

540 * 1.067 = 576 not 368
960 * 1.023 = 981 not 682

我无法理解缩放的逻辑,它也可以通过从0.67变为0.7来缩放,而不是我放在那里的1.067和1.023。

有谁知道这是如何运作并帮助我的?

编辑:下面是进行缩放的代码:

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;

}

我不知道Bitmap.createScaledBitmap但是如果它有助于它给出相同的结果,那么我猜它只是一个缩放矩阵,如下所示:/

EDIT2:我发现在两个轴上按1.5f缩放使得位图成为原始大小,现在通过除以长度得到的缩放因子似乎与缩放矩阵使用不匹配所以我不知道如何“转换”它们以使其正常工作。

1 个答案:

答案 0 :(得分:0)

我发现矩阵缩放将输入的值除以1.5f,因此当它缩放得如此奇怪时它没有任何意义。这是我现在添加到函数中的工作正常(至少对于缩放1f及以上):

if(Vars.screenWidthMulti > 1 && Vars.screenWidthMulti != 1){
    scaleWidth = 1.5f+(Vars.screenWidthMulti-1)*1.5f;
    scaleHeight = 1.5f+(Vars.screenHeightMulti-1)*1.5f;
}else if(Vars.screenWidthMulti == 1){
    scaleWidth = 1f;
    scaleHeight = 1f;
}else if(Vars.screenWidthMulti < 1){
    scaleWidth = 1.5f -(Vars.screenWidthMulti*1.5f);
    scaleHeight = 1.5f -(Vars.screenHeightMulti*1.5f);
}

注意:我还没有测试过低于1的缩放比例,所以bevare。