android – 如何使RecyclerView顺利滚动?
作者:互联网
这更像是一个通用的问题,但经过大量的搜索和尝试,我无法理解为什么这么难实现. This是我能找到的最接近的答案,但仍然无法实现.
具体来说,我正在使用RecyclerView和GridLayoutManager.我想要的是平滑滚动的网格布局(如默认的gallary应用程序),没什么特别的,但网格布局管理器的默认实现以“生涩”的方式滚动视图.我试图从上面的链接实现该方法,但没有成功.
我也尝试实现LinearSmoothScroller,但我不确定如何实现computeScrollVectorForPosition方法.在computeScrollVectorForPosition上的Google’s documentation字面上有0个单词.
我找到了this 3 part tutorial,但它的帮助很小.所以,我想问的是:我们可以在LinearSmoothScroller中实现某种模板代码,还是扩展RecyclerView.SmoothScroller并实现平滑滚动?即使代码依赖于gridlayout中每行的项目数和项目数,也必须有一些方法可以轻松完成.我在这里错过了什么吗?
解决方法:
Android中“典型”滚动的典型来源是应用程序在更新UI的主应用程序线程上花费了太多时间.对于RecyclerView,这意味着在onBindViewHolder()或onCreateViewHolder()中可能需要花费太多时间.每个都需要以亚毫秒的速度返回,这意味着您无法在其中执行磁盘I / O或网络I / O.
think I found the problem. I am using holder.photo.setImageBitmap(BitmapFactory.decodeFile(itemList.get(position).getAbsolutePath())); on onBindViewHolder() and the image file is around 100kb each with about a dozen images in the list
是的,那将在主应用程序线程上进行磁盘I / O和图像解码.这将足够慢以在UI中引起jank(即,“生涩”滚动).
考虑使用图像加载库,如Picasso或Universal Image Loader,因为它们可以异步地从位图填充ImageView.
This sample app使用Universal Image Loader来帮助填充RecyclerView(使用GridLayoutManager)的内容,数据源是设备上的可用视频.
标签:smooth-scrolling,android,android-recyclerview,gridlayoutmanager 来源: https://codeday.me/bug/20191005/1856920.html