Загрузка изображений с помощью Glide в GridView слишком медленная - PullRequest
0 голосов
/ 14 сентября 2018

Я показываю около 50+ изображений с URL с сервера в GridView, который имеет изображение (120 * 120) когда загрузка изображений занимает слишком много времени. Средний размер оригинальных изображений составляет около 50-200 КБ

.

Код скольжения:

В GridViewAdapter

RequestOptions reqOpt = RequestOptions.fitCenterTransform().transform(new RoundedCorners(5));
    ...
GlideApp
      .with(context)
      .load(item.getUrl())
      .apply(reqOpt)
      .placeholder(R.drawable.place_holder)
      .into(holder.ivThumb);

В Gradle

...
    implementation 'com.github.bumptech.glide:glide:4.7.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
...

Ответы [ 4 ]

0 голосов
/ 14 сентября 2018

Попробуйте это ,

Это оптимизирует вашу память для загрузки изображений.

RequestOptions reqOpt = RequestOptions
                            .fitCenterTransform()
                            .transform(new RoundedCorners(5))
                            .diskCacheStrategy(DiskCacheStrategy.ALL) // It will cache your image after loaded for first time
                            .override(holder.ivThumb.getWidth(),holder.ivThumb.getHeight()) // Overrides size of downloaded image and converts it's bitmaps to your desired image size;

Проверьте больше здесь: Glide reference

0 голосов
/ 14 сентября 2018

Вы можете использовать в миниатюре -

GlideApp.with(context)
 .load(item.getUrl())
 .thumbnail(/*sizeMultiplier=*/ 0.25f)
 .apply(reqOpt)
 .placeholder(R.drawable.place_holder)
 .into(holder.ivThumb);
0 голосов
/ 14 сентября 2018

Вы можете использовать Picaso ,, он будет загружаться быстрее, чем скольжение

Picasso.get()
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);

 implementation 'com.squareup.picasso:picasso:2.71828'
0 голосов
/ 14 сентября 2018

Просто добавьте это, когда вы получаете изображение с URL, этот код уменьшает размер этого изображения

Вы также можете сделать это,

ByteArrayOutputStream bytes = new ByteArrayOutputStream();

//save scaled down image to cache dir
newBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

File imageFile = new File(filePath);

// write the bytes in file
FileOutputStream fo = new FileOutputStream(imageFile);
fo.write(bytes.toByteArray());
...