Затухание в анимации при загрузке изображения Использование Picasso

Я хочу показать эффект затухания при загрузке изображения в Imageview. Я использую picasso для кэширования изображения и отображения в представлении изображения. Я искал alot для этого, но не смог найти какое-либо решение.

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

Вот что я делаю сейчас

Picasso.with(context) .load(viewHolder.data.imageList.get(0).url) .networkPolicy(NetworkPolicy.OFFLINE) .placeholder(R.drawable.a_place_holder_list_view) .error(R.drawable.a_place_holder_list_view) .into(viewHolder.ivUser, context.loadImage(viewHolder.ivUser, viewHolder.data.imageList.get(0).url)); public Callback loadImage(RoundedImageView ivUser, String url) { return new callback(ivUser, url); } public class callback implements Callback { RoundedImageView imageView; String url; public callback(RoundedImageView imageView, String url) { this.imageView = imageView; this.url = url; } @Override public void onSuccess() { } @Override public void onError() { Picasso.with(BaseActivity.this) .load(url) .placeholder(R.drawable.a_place_holder_list_view) .error(R.drawable.a_place_holder_list_view) .into(imageView, new Callback() { @Override public void onSuccess() { } @Override public void onError() { Log.v("Picasso", "Could not fetch image"); } }); } } 

Пожалуйста, помогите мне, я застрял в этом довольно долгое время. Заранее спасибо.

Solutions Collecting From Web of "Затухание в анимации при загрузке изображения Использование Picasso"

Цитируя ответ Джейка Уортона:

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

Если вы проверите класс PicassoDrawable

 boolean fade = loadedFrom != MEMORY && !noFade; if (fade) { this.placeholder = placeholder; animating = true; startTimeMillis = SystemClock.uptimeMillis(); } . . . @Override public void draw(Canvas canvas) { if (!animating) { super.draw(canvas); } else { . . . 

fade effect уже применяется для изображений, загруженных из n / w, а не в память / кеш и FADE_DURATION = 200f; //ms FADE_DURATION = 200f; //ms

Чтобы заставить исчезнуть, снова цитируя ответ Джейка Уортона:

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

 final AtomicBoolean playAnimation = new AtomicBoolean(true); Picasso.with(context).load(..).into(imageView, new Callback() { @Override public void onLoad() { if (playAnimation.get()) { //play fade Animation fadeOut = new AlphaAnimation(0, 1); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setDuration(1000); imageView.startAnimation(fadeOut); Animation fadeOutPlaceholder = new AlphaAnimation(1, 0); fadeOutPlaceholder.setInterpolator(new AccelerateInterpolator()); fadeOutPlaceholder.setDuration(1000); placeHolderImageView.startAnimation(fadeOutPlaceholder); } } //.. }); playAnimation.set(false);