Salvar images em Cache "Glide"

Estou trabalhando com o Glide para pegar imagens das capas de músicas, mas demora muito para carregar as capas, conforme o usuário percorre a lista. Oque fazer para deixa elas mais rápido, é preciso salvá-las em cache?

Faz o resize dela.

Glide
    .with(context)
    .load(path)
    .apply(new RequestOptions().override(600, 200))
    .into(imageViewResizeCenterCrop);
1 curtida

Não funciona, ainda tem o mesmo erro, se eu rolar muito rápido a lista da uma travada, e as capas desaparecem e voltam depois de alguns segundos

        Glide.
            with(context)
              .load(img)
              .diskCacheStrategy(DiskCacheStrategy.SOURCE)
              .into(imgView)

Tenta assim entao

1 curtida

Não funciona também e é “RESOURCE” ali

Cara, qual versão do Glide você ta usando?

1 curtida

4.11.0

Mostra o código q vc fez.

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {

    holder.file_name.setText(mFiles.get(position).getTitle());
   // holder.album_art.setImageResource(mFiles.get(position).getAlbum());

    // Bitmap image = getAlbumArt(mFiles.get(position).getPatch());
    // byte[] image = getAlbumArt(mFiles.get(position).getPatch());
    Bitmap image = getAlbumArtFromMP3File(mFiles.get(position).getPatch());
   //Bitmap image = getddd(mFiles.get(position).getPatch());
    if (image != null) {

        Glide.with(mContext).asBitmap()
                .load(image)
                .into(holder.album_art)

        ;

    } else {
        Glide.with(mContext)
                .load(R.drawable.img_music)
                .into(holder.album_art);

    }

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(mContext, PlayerActivity.class);
            intent.putExtra("position", position);
            mContext.startActivity(intent);
        }
    });

private static Bitmap getAlbumArtFromMP3File(String path) {
   Bitmap bitmap = null;

    MediaMetadataRetriever retriever = new MediaMetadataRetriever();

    try {
        retriever.setDataSource(path);
        byte[] art = retriever.getEmbeddedPicture();
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 2;

        if (art != null) {
          bitmap= BitmapFactory.decodeByteArray(art, 0, art.length, options);

        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            retriever.release();
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }
    return bitmap;

}