【发布时间】:2021-04-20 07:24:24
【问题描述】:
我需要在我的应用程序中显示图像列表,并且我从 API 调用中获取这些图像作为 URL。现在我使用Glide 来展示它们,但我不喜欢它产生的加载效果(加载时的空白和图像)。有没有办法即时显示这些图像,无需任何加载时间,也可能无需下载?
【问题讨论】:
标签: android android-glide android-image
我需要在我的应用程序中显示图像列表,并且我从 API 调用中获取这些图像作为 URL。现在我使用Glide 来展示它们,但我不喜欢它产生的加载效果(加载时的空白和图像)。有没有办法即时显示这些图像,无需任何加载时间,也可能无需下载?
【问题讨论】:
标签: android android-glide android-image
由于图像存储在远程服务器上,因此无法绕过下载过程,但Glide 确保仅在必要时从远程服务器下载图像,如文档所述
默认情况下,Glide 在启动之前会检查多个缓存层 新的图像请求:
活动资源 - 此图像现在是否显示在另一个视图中? 内存缓存 - 此图像是否最近加载并仍在内存中? 资源 - 此图像是否已解码、转换和写入 之前的磁盘缓存?数据 - 是否获得此图像的数据 从写到磁盘缓存之前?前两步检查 查看资源是否在内存中,如果是,则返回图像 立即地。后两步检查图像是否在磁盘上 并快速返回,但异步。
如果所有四个步骤都找不到图像,则 Glide 将返回 检索数据的原始来源(原始文件、Uri、Url 等)。
为了解决这个问题,
但我不喜欢它产生的加载效果(空格而 加载和图像)
您可以改为在 ImageView 上添加一个默认占位符,直到下载真实图像。这将在您的实际图像正在下载时显示默认图像,然后在下载完成后将其替换为实际图像。
Glide
.with(context)
.load(url)
.placeholder(R.drawable.ic_placeholder) //your default placeholder resource
.into(imageView)
【讨论】:
您可以通过两种方式显示来自 url 的图像:
URL url = new URL("URL of image here");
Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bitmap);
【讨论】: