【问题标题】:Displaying an image from the internet with android使用android显示来自互联网的图像
【发布时间】:2014-02-08 03:40:48
【问题描述】:

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

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

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

有没有一种方法可以在不使用 Bitmap 的情况下将图像添加到 imageView,而是使用另一种可序列化类型?还是有一种使我的位图可序列化的平滑方法?我知道这是可能的,但我不太确定该怎么做。

非常感谢您的帮助!

【问题讨论】:

    标签: java android serialization bitmap android-imageview


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我建议您尝试picasso 来完成处理/缓存图像的艰苦工作。 将 jar 放入工作区后,您只需要一行代码

      Picasso.with(context).load(image_url).into(imageView);

      【讨论】:

        【解决方案3】:

        因为 Intent extras 中可以放入的大小有一个上限,所以您应该寻找另一种将图像放入 ImageView 的方法。

        在非常高的层次上,这可能是:

        • IntentService 下载图像并将其存储在全局可访问的位置(内存缓存或磁盘上)。
        • 下载完成并且服务将图像保存到某个位置后,它会发送一个广播,让您应用中的 BroadcastReceivers 知道该图像现在可用。
        • 托管 ImageView 的 Activity 或 Fragment 中的 BroadcastReceiver 将从存储的位置检索图像并将其放置在 ImageView 中(如果从磁盘,请记住在主线程外进行此检索)。

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

        【讨论】:

        • thx Brandon 和 droidx,我会试试 picasso,希望它对我和你一样有用。但到目前为止,听起来很棒!
        猜你喜欢
        • 1970-01-01
        • 2012-03-20
        • 1970-01-01
        • 1970-01-01
        • 2020-08-02
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        相关资源
        最近更新 更多