【问题标题】:is it proper scaling?缩放比例合适吗?
【发布时间】:2014-06-08 11:42:04
【问题描述】:

我正在尝试缩放位图,我希望它们可以在所有安卓手机上工作。我在这个网站上看到了这段代码,但我不确定如何以及在哪里将这段代码应用到我的应用中。:

代码:

      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 年。

有人能解释一下哪种方法更适合 API10 或 > 等新 API 吗?

我知道现在有 API19,所以我确信肯定会有这些的新版本和更好的版本。

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

非常感谢您。

【问题讨论】:

    标签: scaling image-scaling android-bitmap


    【解决方案1】:

    您的代码会缩放图像,但 Android 会很好地缩放图像以适应分配给多种方式的空间。

    如果您按照link: 的描述将图像放置在文件夹中,并确保每个文件夹都有正确大小的图像,系统将根据运行它的设备选择正确大小的图像。您还可以将缩放参数应用于图像(请参阅 ImageView.ScaleType 了解更多信息)

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

    【讨论】:

    • 感谢您的帮助。起初我的目标是将正确大小的图像放入 ldpi、mdpi、hdpi、xhdpi、xxhdpi 文件夹中,这样我就不必在代码中缩放它们。我遇到的问题是我有很多幻灯片应用程序的图像。这意味着我的应用程序的大小将超过 100MB,这对于应用程序来说太大了。我上面列出的代码,我会遇到内存不足的问题吗?另外,我应该把代码放在哪里?对于菜鸟问题​​,我很抱歉。谢谢
    • 是的,您很可能必须努力保持低内存。您可能会考虑将图像留在服务器上,然后您的应用程序可以根据需要下载。对于大型应用程序或经常更改图像的应用程序来说,这是一个非常典型的场景。至于上面的代码,当您需要读取图像并立即将其缩放到所需的大小时,应该使用它。正如我上面提到的,它不应该是必需的,除非你想以不同于 Android 的方式缩放它——图像编辑应用程序就是一个很好的例子。您可能会为用户显示大而小的图像选择并相应地进行缩放。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2023-03-26
    • 2016-09-27
    • 1970-01-01
    • 2012-02-05
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多