【问题标题】:Developing Android App with a LOT of large images使用大量大图像开发 Android 应用程序
【发布时间】:2015-12-08 02:06:01
【问题描述】:

我对 Android 开发非常陌生(请怜悯我),并且正在开发一个将使用大量图像的应用程序(就像现在一样,每个图像大约 400KB-1.5MB,至少会有80 张图片)。图像都很大,我想知道在不占用用户手机空间的情况下处理大图像的“推荐”方法是什么。

如果使用该应用程序不需要互联网连接,我会更喜欢,但是,由于我是 Android 开发新手,我不确定最好的选择是什么。

理想情况下,我们希望用户能够非常快速地在图像之间切换。在保持对图像文件的快速访问的同时,最大限度地减少图像在用户设备上占用的空间量的最佳方法是什么?

提前谢谢你!

【问题讨论】:

  • 对不起,也许我没听懂,但
  • 如果您想快速显示图像,您可以为每个图像使用缩略图。 (首先加载缩略图)。您也可以使用一些图片库,如 Picasso、ImageLoader... 这将有助于加载/缓存。

标签: java android image memory resources


【解决方案1】:

我正在开发一个功能非常相似的应用程序,这就是我正在做的向用户显示图像的方法。

关于加载图片

首先,我有一个启动器活动,它创建一系列对象,其中包含我需要的有关图像的所有信息。这是一个简单的例子:

public class ImageData() {
    private String mName, mDescription;
    private int mResID;

    ImageData(String name, String description, int resID) {
        mName = name;
        mDescription = description;
        mResID = resID;
    }
    // Any needed getters/setters or other functionality
}

然后,我将 ImageData 的 ArrayList 传递给我的主要活动,该活动显示一堆缩略图。单击其中一个图像会打开一个包含一系列相关图像的新活动。我的应用程序快速且响应迅速,因此我认为这种方法对您来说是可以接受的。它是否最快是另一回事。这取决于您对所有图像的处理方式。

关于存储图像的位置

我将图像存储在 drawables 文件夹中,因为这允许我使用图像文件的名称来存储图像的资源 ID。

resID = context.getResources().getIdentifier(fileName, "drawable",
    context.getPackageName());

请注意,文件名不应包含任何扩展名,例如 .png 或 .jpg

关于应用程序大小 我的应用程序有 910 个 .png 图像。其中一些是缩略图,其他的大小约为 150KB。最后,图像占用了 135 MB 的空间。平均应用程序可能在 25-50 MB 的范围内,但由于您(和我的)应用程序正在处理大量图像,我认为用户会理解大小的增加。

根据您的估计,您的图片将占用大约 120 MB 的空间。我不会太担心占用太多空间。如果您真的很担心,那么您可以随时将图像的缩略图存储在设备上,如果用户想要完整尺寸的图像,他们可以从服务器获取它。

【讨论】:

    【解决方案2】:

    看来,我明白你的问题了。您需要在内存中加载一些图像并将其显示给用户。在后台应用程序需要加载用户可以切换的图像(例如,您在背景 1、3 中加载图像 2)。然后用户打开下一个图像应用程序需要回收一个图像并加载新的图像(例如,用户从 4 -> 5 切换,它需要回收图像 #3 并加载图像 6)。 此外,如果图像的大小大于用户可以增加它,那么您需要在加载后调整图像大小。
    附言对不起我的英语不好。如果您无法理解某些内容,我会尝试向您解释。

    【讨论】:

    • 在后台,您可以根据需要(系统也可以)加载任意数量的图像,但最好只有 2 - 4 张图像。此外,您还可以加载设备屏幕大小等背景图像,并仅在用户在显示器上看到它时加载原始图像。
    【解决方案3】:

    您可以参考this way 有效地将大位图图像加载到内存(Load a Scaled Down Version into Memory)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多