Когда я устанавливаю изображение из Url в recycleView, оно замедляется, как я могу это исправить? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть recycleView с 50 блоков. Блок имеет два ImageView. Я должен установить два изображения для каждого блока с разных URL. И когда я запускаю свою программу, я переворачиваю список, моя программа замедляется. Я думаю, что это тормозит, потому что, когда я прокручиваю список, recyclerView снова идет по URL, чтобы делать снимки. Я прав? И как я могу это исправить?

Это то, как я устанавливаю изображение на recyclerView с URL

URL newurl = new URL(imageString);
Bitmap mIcon_val = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
holder.myImageView.setImageBitmap(mIcon_val);

Ответы [ 3 ]

1 голос
/ 24 июня 2019

Вы можете использовать Пикассо или скользить для этой задачи -:

Glide.with(context).load(model.getVoucher_image()).into(holder.imageview);
0 голосов
/ 24 июня 2019

Используйте Glide для эффективной загрузки изображений.

Пример В модуле приложения gradle добавьте

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}

, а затем используйте для скольжения для загрузки изображений из drawable

Glide.with(this).load(R.drawable.image_name).into(imageView);

Пример

onBindViewHolder сделать это

Glide.with(this).load(logoImage).into(holder.logo);
0 голосов
/ 24 июня 2019

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

Вместо этого вы можете использовать стороннюю библиотеку для прямой загрузки изображения с сетевого URL-адреса.

Одна из этих библиотек - Glide. Вам просто нужно передать imageView и URL в него, и он загрузит изображение напрямую.

Glide.with(context)
   .load("URL HERE")
   .into(imageView);

Даже вы можете изменить размер изображения перед его загрузкой в ​​imageView, тем самым вы можете уменьшить потребление памяти.

 RequestOptions requestOptions = new RequestOptions();
 requestOptions.override(120, 120);
 requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);

 Glide.with(context)
   .load("URL HERE")
   .apply(requestOptions)
   .into(imageView);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...