开发具有大量图像的Android应用程序

时间:2015-12-08 02:06:01

标签: java android image memory resources

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

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

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

提前谢谢!

3 个答案:

答案 0 :(得分: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());

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以参考this way将大型位图图像有效加载到内存中(将缩小版本加载到内存中)。