它是否适当缩放?

时间:2014-04-23 14:42:02

标签: scaling image-scaling android-bitmap

我正在尝试扩展位图,我希望他们可以在所有Android手机上工作。我在这个网站上看到过这段代码,但我不知道如何以及在何处将此代码应用到我的应用程序中。:

代码:

      Bitmap image1, pic1;
      image1 = BitmapFactory.decodeResource(getResources(), R.drawable.image1);
 float xScale = (float) canvas.getWidth() / image1.getWidth();
            float yScale = (float) canvas.getHeight() / image1.getHeight();
            float scale = Math.max(xScale, yScale);     //selects the larger size to grow the  images by

            scale = (float) (scale*1.1);                     //this allows for ensuring the image covers the whole screen.

            scaledWidth = scale * image1.getWidth();
            scaledHeight = scale * image1.getHeight();

                pic1 = Bitmap.createScaledBitmap(image1, (int)scaledWidth, (int)scaledHeight, true);

然后我也看到了这个网站的代码

http://developer.sonymobile.com/2011/06/27/how-to-scale-images-for-your-android-application/

最后一次更新似乎早在2011年。

有人可以解释哪种方法更适合新API,例如API10或>?

我知道现在有API19,所以我相信必须有这些更好的新版本。

请您与我们分享您的知识和善意吗?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您的代码将缩放图像,但Android会在缩放图像方面做得不错,以适应分配的方式。

如果您按照此link所述将图像放入文件夹中:并确保每个文件夹的图像尺寸合适,系统将根据其运行的设备选择合适尺寸的图像。您还可以应用于图像的缩放参数(有关详细信息,请参阅ImageView.ScaleType)

此外,此link描述了如何有效地加载图像以节省内存。这对于将图像加载到比完整大小所需的内存更少以及如何通过异步任务加载多个图像非常有用。