android - 使用 Picasso、Glide、Image Loader、Universal Image Loader 加载图像失败
问题描述
我创建了印地语视频歌曲应用程序,但视频缩略图无法显示在视频列表中。(加载了单个图像,但无法加载多个图像阵列。)
使用多个图像加载器库但不加载图像:
滑行:
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
Glide .with(viewHolder.icon_1.getContext())
.load(((AppModelicon) this.b.get(i)).getThumnail())
.into(viewHolder.icon_1) ;
Glide.with(MainActivity.this)
.load("https://img.youtube.com/vi/EEX_XM6SxmY/mqdefault.jpg")
.placeholder(R.drawable.ic_menu_camera)
.error(R.drawable.ic_menu_gallery)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
// log exception
Log.e("TAG", "Error loading image", e);
return false; // important to return false so the error placeholder can be placed
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(viewHolder.icon_1);
毕加索:
implementation 'com.squareup.picasso:picasso:2.+'
Picasso.get()
.load("https://img.youtube.com/vi/EEX_XM6SxmY/mqdefault.jpg")
.resize(50, 50)
.centerCrop()
.into(viewHolder.icon_1);
使用带有 glide 的请求管理器:
RequestManager requestManager = Glide.with(a)
.applyDefaultRequestOptions(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.NONE))
.applyDefaultRequestOptions(RequestOptions.placeholderOf(R.drawable.ic_menu_camera));
requestManager
.applyDefaultRequestOptions(RequestOptions.skipMemoryCacheOf(true));
requestManager.load(pathToFile)
.into(viewHolder.icon_1);
后台任务方法使用:
String pathToFile = this.b.get(i).getThumnail();
DownloadImageWithURLTask downloadTask = new DownloadImageWithURLTask(viewHolder.icon_1);
downloadTask.execute(pathToFile);
public class DownloadImageWithURLTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageWithURLTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String pathToFile = urls[0];
Bitmap bitmap = null;
try {
InputStream in = new java.net.URL(pathToFile).openStream();
bitmap = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bitmap;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
请帮助我如何解决这个问题。
解决方案
如果您在 recyclerview 中加载图像,下面的代码可能会帮助您。
@Override
public void onBindViewHolder(final ViewHolder holder, int position)
{
Glide.with(this.context)
.load(urls.get(position))
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.getImage());
}
有关更完整的教程,您可以访问https://ledron.github.io/RecyclerView/
推荐阅读
- javascript - Angular(5):可重用表单组件上的双向数据绑定?
- powershell - 检查计算机是否在线,如果是,则回显“$Computername is online”脚本
- java - 在单个 Activity 中使用 2 个或更多 Firebase Realtime DB
- oracle-sqldeveloper - 如何在 Windows 7 中的 oracle sql developer 版本 18.1.0.095 中创建连接
- android - Android ListView 适配器 getView 未按预期工作
- c++ - 如何设置 MPI_COMM_SPAWN 表现得像 mpirun?
- python - 如何在保留现有数据的同时修补用户模型?
- python - 从具有 NA 值的日期获取年份和月份作为字符串
- java - GET 请求的参数被放入 URL 的查询字符串中。在 POST 请求中,它们位于请求正文中,那么 URL 是什么样的?
- ios - 在 UICollectionView 中加载第一个单元格之前获取 UICollectionViewCell