【问题标题】:How to display images from URL efficently如何有效地显示来自 URL 的图像
【发布时间】:2021-04-20 07:24:24
【问题描述】:

我需要在我的应用程序中显示图像列表,并且我从 API 调用中获取这些图像作为 URL。现在我使用Glide 来展示它们,但我不喜欢它产生的加载效果(加载时的空白和图像)。有没有办法即时显示这些图像,无需任何加载时间,也可能无需下载?

【问题讨论】:

    标签: android android-glide android-image


    【解决方案1】:

    由于图像存储在远程服务器上,因此无法绕过下载过程,但Glide 确保仅在必要时从远程服务器下载图像,如文档所述

    默认情况下,Glide 在启动之前会检查多个缓存层 新的图像请求:

    活动资源 - 此图像现在是否显示在另一个视图中? 内存缓存 - 此图像是否最近加载并仍在内存中? 资源 - 此图像是否已解码、转换和写入 之前的磁盘缓存?数据 - 是否获得此图像的数据 从写到磁盘缓存之前?前两步检查 查看资源是否在内存中,如果是,则返回图像 立即地。后两步检查图像是否在磁盘上 并快速返回,但异步。

    如果所有四个步骤都找不到图像,则 Glide 将返回 检索数据的原始来源(原始文件、Uri、Url 等)。

    为了解决这个问题,

    但我不喜欢它产生的加载效果(空格而 加载和图像)

    您可以改为在 ImageView 上添加一个默认占位符,直到下载真实图像。这将在您的实际图像正在下载时显示默认图像,然后在下载完成后将其替换为实际图像。

    Glide
    .with(context)
    .load(url)
    .placeholder(R.drawable.ic_placeholder) //your default placeholder resource
    .into(imageView)
    

    【讨论】:

      【解决方案2】:

      您可以通过两种方式显示来自 url 的图像:

      • 没有任何第三方库:

          URL url = new URL("URL of image here");
          Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
          imageView.setImageBitmap(bitmap);

      【讨论】:

        猜你喜欢
        • 2014-06-04
        • 2012-03-21
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 2021-06-26
        • 1970-01-01
        相关资源
        最近更新 更多