【发布时间】:2021-06-19 09:14:45
【问题描述】:
我是using RecyclerView 和GridLayoutManager 和RecyclerView Scroll 的速度太快了。我想让它慢下来。我确实尝试了许多其他代码和方法,但没有一个对我有用。
这是我发现的
这篇文章建议在 onCreateViewHolder 和 onBindViewHolder 中不应该有 I/O 操作,并且花费太多时间来执行这些方法中的任何一个都会产生延迟。但是,我没有 I/O 操作,也没有太多代码。
...
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_view, parent, false);
return new MyViewHolder(view,listner);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
GlideApp.with(context)
.load(arrayList.get(position).getUri())
.apply(RequestOptoins.overrideOf(180,180))
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(holder.img);
Log.d("FetchImages(): "," Glide Called");
}
...
这篇文章建议使用CustomLayoutManager 类。但是,这对我也不起作用。可能是因为所有答案都集中在LinearLayoutManager,可能不支持GridLayoutManager。
我也试过这个链接,但是我不明白里面发生了什么。
4.https://programmer.group/android-recycler-view-slides-quickly-to-the-top.html
与此链接相同。什么都看不懂。
列表太长,无法在此处发布。但是,最终我尝试了所有我理解的代码。但是,到目前为止,似乎没有什么对我有用。
注意 我正在尝试显示来自外部存储的图像。因此,第一次加载 glide 将创建缩略图缓存,然后在第二次加载时不会有更大尺寸的图像。但是,我的手机里仍然有 5000 多张图片。并且一次 recyclerview 只能显示 40 张图像。因此,如果我不小心滚动快速其余图像将加载到前台。所以,我想禁用快速滚动,这样无论有多少照片,recyclerview 都只会显示加载的照片。
【问题讨论】:
-
请勿使用大尺寸图片!
-
我正在尝试显示来自外部存储的图像。因此,第一次加载 glide 将创建缩略图缓存,然后在第二次加载时不会有更大尺寸的图像。但是,我的手机里仍然有 5000 多张图片。并且一次 recyclerview 只能显示 40 张图像。所以,如果我不小心滚动快速其余的图像将在前台加载。所以,我想禁用快速滚动,这样无论有多少照片,recyclerview 都只会显示加载的照片。
标签: java android android-recyclerview