RecyclerView

RecyclerView,第1张

RecyclerView 是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法。

因为 RecyclerView 属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在 build.gradle 中添加对应的依赖库。

在 app/build.gradle 中的 dependencies闭包 添加以下内容:

然后点击顶部的Sync Now进行同步

由于 RecyclerView 不是内置在系统SDK中,需要把其完整的包名路径写出来

创建ImageView来显示水果图片,TextView来显示水果名字。

为 RecyclerView 新增适配器 FruitAdapter ,并让其继承于 RecyclerView.Adapter ,把泛型指定为 FruitAdapter.ViewHolder 。

LayoutManager 用于指定RecyclerView的布局方式。 LinearLayoutManager 指的是线性布局。

运行效果:

把LinearLayout改成垂直排列,因为水果名字长度不一样,把宽度改为100dp。

ImageView和TextView都改为水平居中

通过调用 setOrientation() 把布局的排列方向改为水平排列。

得益于RecyclerView的设计,我们可以通过LayoutManager实现各种不同的排列方式的布局。

运行结果:

除了 LinearLayoutManager , RecyclerView 还提供了 GridLayoutManager(网格布局) 和 StaggeredGridLayoutManager(瀑布流布局)

GridLayoutManager(网格布局)

修改 MainActivity.java ,把

换成

GridLayoutManager (Context context, int spanCount)

运行结果:

StaggeredGridLayoutManager(瀑布流布局)

把LinearLayout的宽度设为 match_parent 是因为瀑布流的宽度是 根据布局的列数来自动适配的,而不是固定值 。(GridLayoutManager也是 根据布局的列数来自动适配的

StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)

StaggeredGridLayoutManager传入2个参数,第一个是布局的列数,第二个是布局的排列方向。

random.nextInt(20)+1 产生1-20的随机数

运行效果:

上图是GridLayoutManager,下图是StaggeredGridLayout。

当从显示效果来看,已经一目了然。

GridLayoutManager是会固定高度的,所以会留下很多空白区域。

相反,StaggeredGridLayout并不会固定高度,以至于就算子项的高度不一致,下一行的会自动靠拢上一行。

修改ViewHolder,添加fruitView变量来保存子项最外层布局的实例。

运行效果:

1、内容需要通过卡片的形式来展现,还有支持加载更多,所以最底部使用RecyclerView,最好是做成预加载形式,提前n页加载下一页,这样体验更好。

2、为了展示更多内容卡片内要支持垂直分页,这时候我使用了ViewPager,一是可以更好的管理分页内容,二是ViewPager的垂直分页容易实现,三是可以处理不同控件之前的滑动冲突

3、ViewPager第一页使用的可回d的ScrollView,可以在下拉的时候做一些动画之类的 *** 作,例如关注 *** 作等。

4、ViewPager的第二页只是一个普通的ScrollView,具体使用可以根据实际情况来处理

1、RecycleView的分页效果基于PagerSnapHelper,RecyclerView在25.1.0版本中添加了一盒基于SnapHelper的子类PagerSnapHelper,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。

2、卡片的效果是在滑动的时候根据RecycleView的偏移量计算缩放因子进行缩放

3、RecycleView的item内有一个垂直分页的VerticalViewPager,VerticalViewPager是在ViewPager上转换X,Y即可

4、解决ViewPager与RecycleView滑动的冲突,在ViewPager中屏蔽父视图的上下滑动事件

5、解决ViewPager子视图ScrollView的冲突,在ViewPager中拦截事件

6、解决ViewPager与BounceScrollView的冲突,在下拉过程中有时会被ViewPager拦截

以上就是此项目中的所有关键点。

ScrollViewDemo 欢迎Star

RecycleViewCardGallary


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11366590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存