【发布时间】:2016-07-10 14:04:11
【问题描述】:
我有一个包含大量图片的应用。我想预加载即将发布的图像,以便用户在图像出现在屏幕上时看到更少(理想情况下没有)延迟。
我一直在尝试不同的 preload() 和 downloadOnly() 变体,唯一可行的组合是 preload 和 load 使用完全相同的大小参数。
预加载:
Glide.with(AbstractFeedFragment.this)
.load(picture.getUrl())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.preload();
这里的preload()和使用preload(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)是一样的
当实际图像出现在屏幕上时将其加载到 ImageView 中:
requestManager
.load(url)
// Use the same dimensions used as when preloading.
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.placeholder(placeholderColor)
.error(R.color.image_fallback_bg)
.dontTransform()
.into(imageView);
如果我删除 override 或 dontTransform 方法,图像会在屏幕上再次下载(即使我只是预加载了它)。
我做错了吗?我的理解是 DiskCacheStrategy.ALL 会将原始图像放在缓存中,然后在真实显示时检索并调整大小。
有没有办法在实际显示图像时不指定 SIZE_ORIGINAL 来加载图像?如果我理解正确,这意味着我现在以全尺寸而不是 ImageView 的正确尺寸显示图像。
【问题讨论】:
标签: android android-glide