Получить изображения с обратным вызовом в 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? Сам Джейк Уортон имеет ответ.