屏幕尺寸变化时位图无法准确缩放

问题描述

我为我的位图 fish[0] 创建了一个缩放位图 scaledfish[0],这样当屏幕尺寸改变时,我的程序会自动将位图缩放到新的屏幕尺寸。我的代码如下:

fish[0] = BitmapFactory.decodeResource(getResources(),R.drawable.charactertwo);
scaledfish[0] = Bitmap.createScaledBitmap(fish[0],((canvasWidth/720)*45),((canvasHeight/1232)*45),false);

作为参考,这也是位图应该始终缩放的内容: Perfectly scaled bitmap

创建原始位图高度和宽度的屏幕大小为 720x1232,而 fish[0] 的高度和宽度为 45x45(这就是为什么我将 scaledfish[0] 乘以 45 的高度和宽度)。当我使用此代码并编写

 canvas.drawBitmap(scaledfish[0],fishX,fishY,null);

位图是一半大一半宽,看起来是这样的:

Half as wide and half as long as it should be

当我将代码切换到这个时:

 scaledfish[0] = Bitmap.createScaledBitmap(fish[0],((canvasWidth/720)*90),((canvasHeight/1232)*90),false); 

在 720x1232 的屏幕上,它完美运行,很棒。但是,当我将屏幕尺寸切换到 1440x2560 时,位图非常宽,但只有一半长,如下所示:

Perfectly wide but half as long as it should be

而且,只是为了提供完全清晰,当我将代码切换为与此相等时:

 scaledfish[0] = Bitmap.createScaledBitmap(fish[0],((canvasHeight/1232)*180),false); 

1440x2560 的屏幕尺寸完美运行。伟大的。但是,当屏幕尺寸再次变为 720x1232 时,位图非常宽,但是应该是原来的 2 倍,看起来像这样:

Perfectly wide but 2 times as long as it should be

所以,总结整个问题,位图仅在屏幕 1 (720x1232) 上正确缩放:

  • X 值是原始位图大小的两倍
  • Y 值是原始位图大小的两倍

并且它仅在以下情况下在屏幕 2 (1440x2560) 上正确缩放:

  • X 值是原始位图大小的两倍
  • Y 值是原始位图大小的 4 倍。

如果有人可以为我提供比例/比例的解决方案,使其在每个屏幕上都能正常工作,我将不胜感激。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)