У меня есть приложение с длинным потоком изображений. Я хочу предварительно загрузить предстоящие изображения, чтобы пользователи видели меньшую (в идеале без) задержку, когда изображения появляются на экране.
Я пробовал разные варианты preload() и downloadOnly(), и единственная комбинация, которая, кажется, работает, - это использование для предварительной загрузки и загрузки одинаковых параметров размера.
Предварительная загрузка:
Glide.with(AbstractFeedFragment.this)
.load(picture.getUrl())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.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.