RecyclerView изображения показывают артефакты - PullRequest
0 голосов
/ 26 января 2019

У меня есть recyclerView, у которого есть CircularImageView, и я загружаю изображения из URL-адреса в imageView с помощью Picasso. Я также добавил анимацию исчезновения. Но когда я быстро прокручиваю, в программе recyclerView отображаются артефакты предыдущих изображений.

artifacts

Это мой адаптер:

public class CastAdapter extends RecyclerView.Adapter<CastAdapter.CastHolder> {
private List<String> cast;
private Context mContext;

public CastAdapter(List<String> cast, Context mContext) {
    this.cast = cast;
    this.mContext = mContext;
}

@NonNull
@Override
public CastHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.item_movie_cast, viewGroup, false);
    return new CastHolder(view);
}

@Override
public void onBindViewHolder(@NonNull CastHolder castHolder, int i) {
    String url = TMDB_IMAGE + "w185" + cast.get(i);
    Picasso.get().load(url).into(castHolder.target);
}

@Override
public int getItemCount() {
    return cast.size();
}

class CastHolder extends RecyclerView.ViewHolder {

    private CircleImageView imageView;
    private Animation fadeIn;
    Target target;

    CastHolder(@NonNull View itemView) {
        super(itemView);
        imageView = itemView.findViewById(R.id.cast);
        fadeIn = new AlphaAnimation(0, 1);
        fadeIn.setInterpolator(new DecelerateInterpolator());
        fadeIn.setDuration(200);
        fadeIn.reset();

        target = new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                imageView.setImageBitmap(bitmap);
                imageView.startAnimation(fadeIn);
            }

            @Override
            public void onBitmapFailed(Exception e, Drawable errorDrawable) {
            }

            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {

            }
        };
    }
}

РЕДАКТИРОВАТЬ: Я попытался отключить анимацию, и артефакты все еще были там

1 Ответ

0 голосов
/ 26 января 2019

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

Попробуйте уменьшить анимацию.

...