我对Android开发很陌生(怜悯我),并且正在开发一个将使用大量图像的应用程序(因为它们现在,每个图像大约400KB-1.5MB,并且至少会有80张图片)。图像都非常大,我想知道"推荐什么"处理大图像的方法不会占用用户手机上的空间。
如果使用该应用程序不需要互联网连接,我更愿意,但是,由于我是Android开发的新手,我不确定最佳选择是什么。
理想情况下,我们希望用户能够非常快速地在图像之间切换。在保持对图像文件的快速访问的同时,最大限度地减少图像占用用户设备的空间的最佳方法是什么?
提前谢谢!
答案 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将大型位图图像有效加载到内存中(将缩小版本加载到内存中)。