用android显示来自互联网的图像

时间:2014-01-18 19:54:43

标签: java android serialization bitmap android-imageview

我正在写一个Android应用程序,我目前的任务是从URL加载图像并将其显示在ImageView中。 到目前为止我做了什么:我设法下载图像并将其保存为位图。现在,当我想通过

将其添加到意图中时
intentRecord.putExtra("Data",(DownloadDataImage) result);

结果是我的位图图像,我得到一个错误,因为位图不可序列化,而.putExtra()需要一个可序列化的输入。 你们知道我的解决方法吗?我不知道如何以适当的方式规避我的问题。

有没有办法在不使用Bitmap的情况下将图像添加到imageView,而是使用其他可序列化类型?或者有一种平滑的方法可以使我的位图可序列化吗?我知道这是可能的,但我不太清楚如何做到这一点。

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

我建议你尝试picasso来完成处理/缓存图片的艰苦工作。 在工作区中安装jar后,您只需要一行代码

Picasso.with(上下文).load(IMAGE_URL).into(ImageView的);

答案 1 :(得分:1)

因为Intent附加内容的大小存在上限,所以您应该考虑另一种方法将图像放入ImageView中。

在很高的层面上,这可能是:

  • IntentService下载图像并将其存储在全局可访问的位置(内存缓存或磁盘上)。
  • 下载完成后,服务已将图像保存到某处,它会发送广播,让应用中的BroadcastReceivers知道图像现在可用。
  • 托管ImageView的活动或片段中的BroadcastReceiver将从存储的位置检索图像并将其放在ImageView中(如果是从磁盘,则记得从主线程执行此检索)。

正如其他回答者所提到的,有一些框架可以完成很多这样的样板工作。正如droidx所建议的那样,Picasso是一个很容易实现的好解决方案,可能是你最好的选择。

答案 2 :(得分:0)

你可以使用像Universal Image Loader这样的外部库,你不必担心缓存管理和其他事情......