Получить изображения с обратным вызовом в Picasso?
Я хочу показать серию фотографий без пробелов между фотографиями, где фотографии меняются с регулярным интервалом. Я понял, что Picasso инициализирует ImageView до того, как он начнет загрузку, и он всегда делает это, независимо от того, выбрал ли я fetch() или нет, прежде чем вызывать().
Я извлекаю(), чтобы сохранить промежуток между изображениями малыми, а также использовать .placeholder(R.color.black), но разрыв все еще отображается, даже когда изображение загружается из памяти.
Мой код выглядит следующим образом
Picasso.with(getContext()).load(url).fetch();
затем с задержкой [которая в настоящее время исправлена и которую я хочу настроить в зависимости от скорости сети)
Picasso.with(getContext()).load(url).into(screenSurface);
Я заметил, что fetch() не поддерживает никаких параметров обратного вызова и возвращает void, поэтому мне кажется невозможным узнать, когда кеш нагревается.
Два вопроса:
- Можно ли заметить, когда изображение кэшируется?
- Есть ли другой способ избавиться от перерывов между изображениями и заставить их появляться регулярно.
[Я знаю, что могу как-то вручную это кодировать, но если Picasso поддерживает его, я бы хотел его использовать.]
Ответы
Ответ 1
На основе источника, похоже, что fetch
ничего не делает после завершения, включая уведомление любых потенциальных слушателей. К сожалению, FetchAction
не является общедоступным классом, поэтому вы не можете переопределить эту функциональность.
Вы можете решить эту проблему с помощью пользовательского подкласса Target
, например:
Picasso.with(getContext()).load(url).into(new Target() {
@Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// cache is now warmed up
}
@Override public void onBitmapFailed(Drawable errorDrawable) { }
@Override public void onPrepareLoad(Drawable placeHolderDrawable) { }
});
Ответ 2
Я знаю, что это старый вопрос, но команда fetch()
допускает обратные вызовы, такие как fetch(Callback callback)
.
Это имеет обратный вызов onSuccess()
и onError()
для запрошенной загрузки URI.
Смотрите здесь для деталей javadoc
Ответ 3
Метод .into()
предоставляет второй аргумент, который является обратным вызовом к успеху и сбою. Вы можете использовать это, чтобы отслеживать, когда изображение прибыло.
Javadoc: http://square.github.io/picasso/javadoc/com/squareup/picasso/RequestCreator.html#into-android.widget.ImageView-com.squareup.picasso.Callback-
Посмотрите на это: Как реализовать мой собственный кэш диска с библиотекой picasso - Android? Сам Джейк Уортон имеет ответ.