Я пытаюсь сделать recyclerview с gifs. Все отлично, но фреска не кэширует gif. После прокрутки списков рециркуляции и прокрутки вверх снова gifs загружаются еще раз. Я предположил, что их нужно кэшировать и загружать немного быстрее. Раньше я использовал ION library. Загрузка была быстрее и не имела проблемы с кешем. Мне пришлось изменить lib, потому что у него есть некоторая проблема с декодированием gif, описанная here. Текущее решение выглядит так:Кэширование gifs в fresco
//for default initial in application class
Fresco.initialize(this);
//I have also tried to change DiskCacheConfig and ImagePipelineConfig params.
//Without any positive result
//for recyclerview on onBindViewHolder
GenericDraweeHierarchy hierarchy = holder.draweeView.getHierarchy();
Uri uri = Uri.parse(path);
hierarchy.setPlaceholderImage(R.drawable.img_bg);
Logger.e(check(uri) + " " + uri.toString());
DraweeController controller = Fresco.newDraweeControllerBuilder().setUri(uri)
.setAutoPlayAnimations(true).build();
holder.draweeView.setController(controller);
//for method which show cached uri images in imagepipeline
public static boolean check(Uri uri) {
ImagePipeline imagePipeline = Fresco.getImagePipeline();
return imagePipeline.isInBitmapMemoryCache(uri);
}
//... all the time log shows "false + gif url"
Я не видел никакой информации о не кешировании анимированных изображений. Существует информация о не поддерживаемой постобработке изображений для анимаций, но это все об этом. Как правильно кешировать gif?
Редактировать: Это похоже на анимацию кеш-фрески, потому что ниже метод возвращает true для перезагруженных gif.
public static boolean isImageDownloaded(Uri loadUri) {
if (loadUri == null) {
return false;
}
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance()
.getEncodedCacheKey(ImageRequest.fromUri(loadUri));
return ImagePipelineFactory.getInstance().getMainDiskStorageCache().hasKey(cacheKey)
|| ImagePipelineFactory.getInstance().getSmallImageDiskStorageCache()
.hasKey(cacheKey);
}
Это не удовлетворительное решение. Я должен показать автозапущенную сетку gif. Когда вы посмотрите на приложение GIF Keyboard, вы увидите список/сетку gif с автозапускной анимацией. Он плавно прокручивается с приемлемым поведением кэша. Их решение должно быть уместным. – Nihilus13
Должно быть уместно, но, к сожалению, я не могу понять, как они достигли эффективного кеша и плавного прокрутки. – Nihilus13
Я использую фрески, чтобы загрузить gif и не анимировать ее. Когда прокрутка, я все еще получаю проблему –