【问题标题】:Android Programming Working with Lots of Images处理大量图像的 Android 编程
【发布时间】:2016-03-10 02:06:46
【问题描述】:

Android 开发新手。只是在寻找建议。我想开发一个 android 应用程序,它将向用户显示大量图像(点击或滑动)。换句话说,用户应该能够浏览应用程序提供的大量图像(而不是在用户手机上)。一个例子是现有的 android 应用程序用于鼓舞人心的报价等。

我想知道所有这些图像在开发人员端会保存在哪里? 允许用户浏览这些图像的最快方法是什么? 有没有这方面的在线示例/教程?

我看到的教程很少,但它们仅适用于 5-6 张图片,但我需要为用户提供 500-1000 张图片甚至更多(如果应用成功,将添加)。

任何指针将不胜感激。

【问题讨论】:

  • 你应该使用像 Picasso 或 glide 这样的图像加载库
  • provide by the app 是什么意思?你是从resource 目录还是从服务器加载图片?
  • 这就是我想问的,如果不清楚,抱歉。资源目录中是否可以有很多图像?有哪些选项可用于从服务器中提取/加载图像?
  • 我添加了答案。我列出了两种可能的方法。我不知道其他可能的方法。
  • 喜欢 Instagram 吗?您从服务器下载照片。您在应用中保留的任何静态图像,例如菜单和按钮图标。

标签: android


【解决方案1】:

可能的方法是

  • 将这些图像存储在服务器上并从服务器 URL 加载。

您可以使用 Picasso 通过以下代码加载这些图像

com.squareup.picasso.Picasso.with(context).
    load(imaegPath).
    placeholder(R.mipmap.ic_launcher).
    into(imageView);

这里imagePath是图片的URL。

有关Picasso的更多详细信息,请阅读this answer

但为此你需要互联网连接。

注意:这可能不是加载图像的最快方式,因为它取决于互联网连接。

  • 您可以将图像存储在resources 目录中并加载图像。 imageview.setImageResource(R.id.image1);

但是如果图片尺寸很大,你的应用尺寸也会相应地变大。

【讨论】:

  • "但是如果图像尺寸很大,您的应用程序尺寸也会相应地增加。"您的意思是图像数量很大或每个图像的大小?
【解决方案2】:

您似乎需要大容量的内存,以及控制它的策略。

首先,我建议你参加你的记忆课程。 memoryClass 显示您的应用程序可以使用多少内存。使用此值,您可以确定您的图像缓存量。

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
int memoryClass = am.getMemoryClass();
Log.v("onCreate", "memoryClass:" + Integer.toString(memoryClass));

另请参阅:Detect application heap size in Android


第二,Android 2.2和2.3的ImageView存在内存泄漏。 (嗯,这些版本现在已经很老了,很难找到)

Android bitmap imageview memory leak

您可以下载此示例: https://github.com/StanleyKou/GettyImageViewer
在这个例子中,你可以看到如何使用 picasso 库来处理来自网站的许多图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多