本文使用的Glide版本为4.8.0
正常的在recyclerview中使用Glide.with().load()加载网络图片,Glide只会在滚动出来的时候才会获取图片,这样对于网速不那么快,或者图片有点大的时候,可能就会先显示占位图,如果想要在未滚出来时候就先从网络获取出图片来,自己监听recyclerView然后去使用Glide的preload,会过于复杂,而且坑很多,还好Glide给我们提供了预加载的模块RecyclerViewPreloader。
RecyclerViewPreloader需要两个配置的参数类PreloadSizeProvider和PreloadModelProvider。
PreloadSizeProvider是用来配置预加载图片的大小的
Glide官网上是这样写的
PreloadSizeProvider sizeProvider =
new FixedPreloadSizeProvider(imageWidthPixels, imageHeightPixels);
复制代码
imageWidthPixels, imageHeightPixels为需要预加载的图片宽和高的像素,PreloadSizeProvider 负责保证你的 RecyclerViewPreloader 使用与你的适配器中 onBindViewHolder 方法一样的尺寸来加载图片。
PreloadModelProvider的作用有两个,一个是返回一个地址(URL或者路径),第二个是把这个地址加载到内存中
private class MyPreloadModelProvider implements ListPreloader.PreloadModelProvider {
@NonNull
&