gpt4 book ai didi

Android Recyclerview 预加载 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:39 30 4
gpt4 key购买 nike

我想知道当用户滚动得更快时,我如何才能避免 recyclerview 中的 View 出现小的白色“闪烁”。
当然可以通过在可见屏幕之外预加载更多 View 来避免闪烁

虽然这一定是一项非常常见的任务,但我还找不到任何如何完成的东西?

我试过博客中的这段代码:

public class PreCachingLayoutManager extends LinearLayoutManager {
private static final int DEFAULT_EXTRA_LAYOUT_SPACE = 600;
private int extraLayoutSpace = -1;
private Context context;

public PreCachingLayoutManager(Context context) {
super(context);
this.context = context;
}

public PreCachingLayoutManager(Context context, int extraLayoutSpace) {
super(context);
this.context = context;
this.extraLayoutSpace = extraLayoutSpace;
}

public PreCachingLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
this.context = context;
}

public void setExtraLayoutSpace(int extraLayoutSpace) {
this.extraLayoutSpace = extraLayoutSpace;
}

@Override
protected int getExtraLayoutSpace(RecyclerView.State state) {
if (extraLayoutSpace > 0) {
return extraLayoutSpace;
}
return DEFAULT_EXTRA_LAYOUT_SPACE;
}
}

然后我在构造函数中使用 setLayoutManager() 将 LayoutManager 分配给我的自定义 Recyclerview
它是“自定义的”,但我只想在构造函数中设置 LayoutManager,这就是我覆盖 RecyclerView 的原因
不幸的是,这没有任何效果

最佳答案

RecyclerView 已经是一个非常高效的 API,通常如果出现帧丢失,您可以优化项目布局以使其更轻,并确保在回收 View 时释放资源。真的不需要预加载任何东西。

这是一篇博客文章,提供了一些关于如何做这些事情的想法 https://blog.workable.com/recyclerview-achieved-60-fps-workables-android-app-tips/

他们没有在这篇文章中提到它,但如果您的商品有图片,请确保这些图片不会太大。

要点是尽可能快地绘制 View ,因为在滚动时会不断重绘所有内容。

关于Android Recyclerview 预加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40358704/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com