2016-07-10 1 views
0

У меня есть приложение с длинной загрузкой изображений. Я хочу предварительно загрузить предстоящие изображения, чтобы пользователи видели меньше (в идеале нет) задержки при появлении изображений на экране.Горизонтальная предварительная загрузка работает только в том случае, если задан размер

Я пытаюсь использовать разные варианты 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); 

Если удалить переопределение или методы dontTransform, изображение получает загружал второй раз, когда он приходит на экране (хотя я просто поджат его).

Я что-то не так? Я понял, что DiskCacheStrategy.ALL поместит исходное изображение в кеш, который затем будет извлекаться и изменяться при отображении его на самом деле.

Есть ли способ загрузить изображение без указания SIZE_ORIGINAL при его фактическом отображении? Если я правильно понимаю это означает, что теперь я показываю изображение в полном размере, а не в правильном размере для моего ImageView.

ответ

0

Используйте DiskCacheStrategy.SOURCE как для предварительной загрузки, так и для вашего запроса (для удаленных изображений).

RESULT по умолчанию используется в Glide 3, что потребует, чтобы ваш запрос имел точно такое же преобразование, ширину и высоту, что и ваша предварительная загрузка.

Использование ВСЕХ в вашей предварительной нагрузке будет по существу кэшировать одни и те же данные дважды (потому что не указано преобразование, и вы используете SIZE_ORIGINAL, который предотвратил бы понижающую дискретизацию).